보스 7 DnsContextFactory를 인스턴스화하기 위해, 다음과 같은 예외가 발생합니다실패가
Hashtable env = new Hashtable();
env.put("java.naming.factory.initial", "com.sun.jndi.dns.DnsContextFactory");
env.put("java.naming.authoritative", "false");
env.put("com.sun.jndi.dns.recursion", "true");
env.put("com.sun.jndi.dns.timeout.initial", timeoutProp);
env.put("com.sun.jndi.dns.timeout.retries", "1");
env.put("java.naming.provider.url", providerProp);
DirContext ctx = new InitialDirContext(env);
: 여기
Caused by: javax.naming.NamingException: Failed instantiate InitialContextFactory com.sun.jndi.dns.DnsContextFactory from classloader ModuleClassLoader for Module "deployment.test-case.ear.test-web.war:main" from Service Module Loader at org.jboss.as.naming.InitialContextFactoryBuilder.createInitialContextFactory(InitialContextFactoryBuilder.java:58) at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:664) [:1.6.0_26] at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288) [:1.6.0_26] at javax.naming.InitialContext.init(InitialContext.java:223) [:1.6.0_26] at javax.naming.InitialContext.(InitialContext.java:197) [:1.6.0_26] at javax.naming.directory.InitialDirContext.(InitialDirContext.java:82) [:1.6.0_26] at com.test.messaging.internal.resource.dns.DnsClientImpl.querySrv(DnsClientImpl.java:328) [dns-lookup-jar.jar:] ... 16:36:36,000 ERROR [org.apache.catalina.core.StandardContext] (MSC service thread 1-5) Error listenerStart 16:36:36,013 ERROR [org.apache.catalina.core.StandardContext] (MSC service thread 1-5) Context [/test] startup failed due to previous errors 16:36:36,023 INFO [org.jboss.web] (MSC service thread 1-5) registering web context: /test은 관련 코드입니다
코드는 ServletContextListener
에서 호출되므로 예외로 인해 모듈이 시작되지 않습니다. 또한 리스너를 제거하고 동일한 결과 (javax.naming.NamingException: Failed instantiate InitialContextFactory com.sun.jndi.dns.DnsContextFactory
)를 생성하는 서블릿 내에서 코드를 호출하려고 시도했습니다.
나는 실행중인 문제와 매우 유사하지만 스레드가 언급 한 것처럼 "jboss.modules.system.pkgs
"속성을 "com.sun.jndi.dns
"으로 설정하면 효과가 없습니다.
코드는 보스 6 WebSphere Application Server에 7 및 제로니모 2.2.1 (톰캣 6)에 제대로 작동하지만, 전술 한 바와 같이 보스 (7)에 실패한다. JBoss AS 7.0.0을 실행 중입니다. 최종 버전이며 1.6.0_26 JRE를 사용하여 독립 실행 형 서버를 사용하여 테스트합니다. 이 문제를 해결하는 방법에 대한 제안은 크게 감사하겠습니다.
은 JBoss 개발 커뮤니티 포럼에서 나는 또한 posted this question하지만 어떤 응답을받지 못했습니다.
[업데이트]를이 문제가 가능성이 보스 7의 새로운 절연, 모듈 형 클래스 로딩 정책과 관련된 것 같다. 나는이 문제에 대한 두 가지 해결 방법/솔루션을 찾았지만, 나는 우리가 우리의 응용 프로그램이나 JBoss의 설치를 수동으로 수정을 방지 할 수있는 방법이 특히 경우, 가장 적절한, 권장되는 방법에 대한 제안에 여전히 관심이 있어요.
MANIFEST.MF는
는
$JBOSS_HOME/modules/com/sun/jndi/dns
에$JBOSS_HOME/modules/com/sun/jndi/ldap
을 복사하는com.sun.jndi.dns
모듈을 만들고 "LDAP"의 발생을 수정 "DNS"웹 모듈의에 다음 항목을 추가하려면
MANIFEST.MF
:Dependencies: com.sun.jndi.dns
이제 DnsContextFactory이 제대로이이 모든 JBoss의 설치뿐만 아니라 DnsContextFactory을 사용하는 모든 응용 프로그램의 수정을 필요로하기 때문에 영구적 인 해결책이 될 것 같지 않습니다 인스턴스화 할 수 있습니다.
보스 배포 구조.다음과 같이 XML
는 EAR의
META-INF
디렉토리에jboss-deployment-structure.xml
파일을 추가합니다 :<sub-deployment name="test-web.war"> <dependencies> <module name="deployment.com.sun.jndi.dns" /> </dependencies> </sub-deployment> <module name="deployment.com.sun.jndi.dns"> <dependencies> <module name="system" export="false"> <exports> <include-set> <path name="com/sun/jndi/dns"/> </include-set> </exports> </module> </dependencies> </module>
이 이전 "MANIFEST보다 약간 낫다. MF "방식을 사용합니다. e 응용 프로그램 및 JBoss 모듈이 아니라 DnsContextFactory를 사용하는 모든 응용 프로그램이이 구성을 포함해야한다는 것은 불행한 일입니다.
우리의 응용 프로그램에 JBoss 관련 구성을 더 많이 포함시키지 않는 방법이 있다면 특히 가장 적합한 권장 방법에 대한 제안을 찾고 있습니다.
후속 조치를 위해이 [기능 요청] (https://issues.jboss.org/browse/AS7-1500)이 확인되었으며 JBoss AS 7.0.1.Final에서 사용할 수 있어야합니다. – shelley