'JNDI'에 해당되는 글 1건

통상적으로 JNDI는 Was를 통해 쓰이는 경우가 대부분이다. 결론적으로 Web Application 에서 쓰인다고 봐야한다.

Tomcat 같은경우에는 JNDI Name 앞에 "java:/comp/env/"를 명시해주어야 하기떄문에 서버정보만 있으면 동적으로 처리가 가능하다.

그런데 고맙게도 서버정보는  ServletContext 객체안에 getServerInfo() 메소드를 통하여 얻어올수가 있다. 


1. 객체 생성

String serverInfo = request.getSession().getServletContext().getServerInfo();
JNDIConnection jndiConnection = new JNDIConnection(serverInfo);
Connection connection = jndiConnection.create("jndiName");


JNDIConnection 클래스의 생성자 쪽에 HttpServletRequest 객체를 넘겨줄수도 있다.

하지만 좋지가 않은 방법이다 Connection을 하는 쪽이 일반 JavaProject일 수도 있기때문이다.

일반 JavaProject일 경우 서블릿 jar들을 해당 프로젝트에 추가를 시켜줘야 하기때문이다.


2. 전체소스

import java.sql.Connection;
import java.sql.SQLException;

import javax.naming.InitialContext;
import javax.sql.DataSource;


public class JNDIConnection {
	private String serverInfo;
	private Connection connection;
	
	public JNDIConnection(String serverInfo) {
		this.serverInfo = serverInfo;
	}
	
	public Connection create(String jndiName) {
		try {
			InitialContext initialContext = new InitialContext();
			DataSource dataSource = null;
			if (serverInfo.startsWith("Apache")) {
				dataSource = (DataSource) initialContext.lookup("java:/comp/env/" + jndiName);
			} else {
				dataSource = (DataSource) initialContext.lookup(jndiName);
			}
			connection = dataSource.getConnection();
		} catch (Exception e) {
			/*
			 * NamingException, SQLException catch
			 */
			e.printStackTrace();
		} 
		return connection;
	}
}


Writing...

'JAVA Platform > JAVA' 카테고리의 다른 글

[JAVA] - Swing size, preferredSize 차이점  (0) 2015.03.31
[JAVA] - File 실행하기  (0) 2015.03.22
[JAVA] - DBMS JDBC Connection  (0) 2015.02.13
[JAVA] - Properties File 읽기  (0) 2015.01.25
[JAVA] - Swing JScrollPane 스크롤  (0) 2015.01.21
블로그 이미지

행복그리고..

,