내 앱의 XML 설정 파일 (다소 Tomcat의 context.xml
과 유사)에서 JNDI 조회를 정의하고 싶습니다. 그런 다음 내 앱에서 참조하십시오. 그런 다음 응용 프로그램은 JNDI를 사용하여 XML 파일에 저장된 정보로 객체를 찾습니다.XML 파일에서 JNDI InitialContext 구성
<app>
<!-- lots of stuff -->
<dataSource name="jdbc/myDB"
maxActive="50" maxIdle="30" maxWait="10000"
username="mysqluser" password="mysqlpassword"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/myDB"/>
<!-- lots of stuff -->
</app>
그런 다음, 내 응용 프로그램에서 :
public class DataSourceProvider {
public DataSource lookupDataSource(String name) {
DataSource dataSource = null;
try {
Context context = new InitialContext();
dataSource = (DataSource) context.lookup("Database");
} catch (NamingException e) {
// Handle...
}
return dataSource;
}
}
DataSourceProvider dsp = new DataSourceProvider();
DataSource myDB = dsp.lookupDataSource("myDB");
가 어떻게이 두 개념을 연결 않습니다 예를 들어
는 내 응용 프로그램의 XML 설정 파일에서 다음 코드를 부여?<dataSource/>
XML 요소가
DataSourceVO
개체로 읽히는 것으로 가정 해보십시오. JNDI 조회를 수행 할 수 있도록
DataSourceVO
인스턴스의
InitialContext
인스턴스를 어떻게 구성합니까? 미리 감사드립니다!
업데이트 :
try{
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
String securityPrincipal = domain + "\\" + user;
env.put(Context.SECURITY_PRINCIPAL, securityPrincipal);
env.put(Context.SECURITY_CREDENTIALS, password);
env.put(Context.PROVIDER_URL, "ldap://" + domainController);
ctx = new InitialDirContext(env);
} catch (AuthenticationException ex) {
ex.printStackTrace();
} catch(NamingException nex){
nex.printStackTrace();
}
내가 무엇을 찾고 있어요 이이다 : 나는이 예제를 발견? 그런 식으로 XML을 Hashtable
(또는 이와 비슷한)으로 읽고 해당 테이블에서 InitialContext
을 만들 수 있습니까? 그게 전부일까요?!?
당신이 웹 응용 프로그램을 응용 프로그램입니다을 사용하여 데이터 소스를 구성 할 수있는 옵션이없는 경우? 그렇다면 context.xml에서 JNDI를 사용하지 않는 이유는 무엇입니까? 그렇지 않다면, 당신은 봄을 사용하고 단순히 의존성 주입을 사용하도록 고려 했습니까? – Rafa
고마워요 @YoriKusanagi - 아닙니다, 스프링은 옵션이 아니며 아니오, 재사용 할 수있는 JAR이지 WAR가 아닙니다. –
... ('context.xml '이 없으므로). –