2012-04-05 2 views
0

db-data-config.xml에서 jndiName 특성을 사용하려고합니다. 이것은 바람둥이에서 잘 작동합니다. 그러나 websphere에 문제가 있습니다.solr 데이터 가져 오기 처리기 jndi websphere

다음 예외는 자바 "는 J2EE 응용 프로그램에서 JNDI 작업을 실행하지 않습니다 있는지 확인"

을 던져된다. "이름을 정적 코드 블록 내에서 또는 J2EE 애플리케이션에 의해 만들어진 스레드에서 이러한 코드는 반드시 실행되지 않습니다 서버 어플리케이션 요구의 thread가되어, 「java :」이름의 JNDI 조작에서는 지원되지 않습니다. [루트 예외는 javax.naming.NameNotFoundException입니다. 이름 comp/env/jdbc가, java :

websphere에서 정적 코드의 jndi 리소스에 액세스하는 데 문제가있는 것처럼 보입니다. 아무도 이것을 경험 한 적이 있습니까?

DataImporter E org.apache.solr.common.SolrException log Full Import failed:org.apache.solr.handler.dataimport.DataImportHandlerException: Unable to execute query: <REMOVE SQL from here> 
    at org.apache.solr.handler.dataimport.DataImportHandlerException.wrapAndThrow(DataImportHandlerException.java:72) 
    at org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.<init>(JdbcDataSource.java:253) 
    at org.apache.solr.handler.dataimport.JdbcDataSource.getData(JdbcDataSource.java:210) 
    at org.apache.solr.handler.dataimport.JdbcDataSource.getData(JdbcDataSource.java:39) 
    at org.apache.solr.handler.dataimport.SqlEntityProcessor.initQuery(SqlEntityProcessor.java:59) 
    at org.apache.solr.handler.dataimport.SqlEntityProcessor.nextRow(SqlEntityProcessor.java:73) 
    at org.apache.solr.handler.dataimport.EntityProcessorWrapper.nextRow(EntityProcessorWrapper.java:238) 
    at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:596) 
    at org.apache.solr.handler.dataimport.DocBuilder.doFullDump(DocBuilder.java:268) 
    at org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:187) 
    at org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:359) 
    at org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:427) 
    at org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:408) 
Caused by: javax.naming.ConfigurationException: A JNDI operation on a "java:" name cannot be completed because the server runtime is not able to associate the operation's thread with any J2EE application component. This condition can occur when the JNDI client using the "java:" name is not executed on the thread of a server application request. Make sure that a J2EE application does not execute JNDI operations on "java:" names within static code blocks or in threads created by that J2EE application. Such code does not necessarily run on the thread of a server application request and therefore is not supported by JNDI operations on "java:" names. [Root exception is javax.naming.NameNotFoundException: Name comp/env/jdbc not found in context "java:".] 
    at com.ibm.ws.naming.java.javaURLContextImpl.throwConfigurationExceptionWithDefaultJavaNS(javaURLContextImpl.java:428) 
    at com.ibm.ws.naming.java.javaURLContextImpl.lookup(javaURLContextImpl.java:399) 
    at com.ibm.ws.naming.java.javaURLContextRoot.lookup(javaURLContextRoot.java:214) 
    at com.ibm.ws.naming.java.javaURLContextRoot.lookup(javaURLContextRoot.java:154) 
    at javax.naming.InitialContext.lookup(InitialContext.java:436) 
    at org.apache.solr.handler.dataimport.JdbcDataSource$1.call(JdbcDataSource.java:140) 
    at org.apache.solr.handler.dataimport.JdbcDataSource$1.call(JdbcDataSource.java:128) 
    at org.apache.solr.handler.dataimport.JdbcDataSource.getConnection(JdbcDataSource.java:363) 
    at org.apache.solr.handler.dataimport.JdbcDataSource.access$200(JdbcDataSource.java:39) 
    at org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.<init>(JdbcDataSource.java:240) 
    ... 11 more 
Caused by: javax.naming.NameNotFoundException: Name comp/env/jdbc not found in context "java:". 
    at com.ibm.ws.naming.ipbase.NameSpace.getParentCtxInternal(NameSpace.java:1837) 
    at com.ibm.ws.naming.ipbase.NameSpace.lookupInternal(NameSpace.java:1166) 
    at com.ibm.ws.naming.ipbase.NameSpace.lookup(NameSpace.java:1095) 
    at com.ibm.ws.naming.urlbase.UrlContextImpl.lookup(UrlContextImpl.java:1233) 
    at com.ibm.ws.naming.java.javaURLContextImpl.lookup(javaURLContextImpl.java:395) 
    ... 19 more 
+0

예, static initializer 또는 생성자 내에서 "java :"조회가 수행되는 문제를 확인했습니다. db-data-config.xml이란 무엇입니까? 무슨 문제가 보이니? 샘플 코드, 로그의 오류 메시지 또는 관련이 있으면 전체 예외 스택 추적을 포함하십시오. –

+0

stacktrace를 여기에 추가했습니다. db-data-config.xml은 데이터베이스에서 Apache Solr로 가져 오기위한 구성 파일입니다. – tech20nn

답변

1

SOLR 여기에 관리되지 않는 스레드를 사용하고 JNDI의 자바에서 조회하고있다 :이 스레드 중 하나의 네임 스페이스를. 이는 WebSphere가 조회를 수행하는 스레드를 기반으로 java : 네임 스페이스를 식별하기 때문에 WebSphere에서 지원되지 않습니다. Tomcat은 스레드 컨텍스트 클래스 로더를 기반으로이 동작을 수행합니다.이 동작은 동작의 차이점을 설명합니다. 관리되지 않는 스레드는 J2EE 사양에서 허용되지 않으므로 WebSphere의 동작은 실제로 표준을 준수합니다.

+0

감사합니다. 이제 jndiName = "java : comp/env/jdbc/testdb"대신 jndiName = "jdbc/testdb"를 사용하십시오. – tech20nn

관련 문제