2010-05-19 1 views
1

면책 조항 : 저는 Java EE/EJB와 그 모든 것에 대해 완전히 새롭습니다.EJB 클라이언트가 WebLogic 관리 콘솔에서 성공적으로 테스트하는 데이터 소스를 찾을 수 없음

JDeveloper 11g의 통합 WebLogic 서버와 원격 데이터베이스 연결 (JDBC)을 사용하여 성공적으로 배포 할 수있는 간단한 EJB가 있습니다. WebLogic에 정의 된 "PGY2"라는 DataSource가 있으며 관리 콘솔에서 성공적으로 테스트 할 수 있습니다.

public class AdminManagerClient { 
    public static void main(String [] args) { 
     try { 
      final Context context = getInitialContext(); 
      AdminManager adminManager = (AdminManager)context.lookup("Uran-AdminManager#hu.elte.pgy2.BACNAAI.UranEJB.AdminManager"); 
      adminManager.addAdmin("root", "root", "Kovács Isten"); 
      adminManager.addStudent("BACNAAI", "matt", "B Cs", 2005); 
      adminManager.addTeacher("SIPKABT", "patt", "S P", "numanal", "Dr."); 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } 
    } 

    private static Context getInitialContext() throws NamingException { 
     Hashtable env = new Hashtable(); 
     // WebLogic Server 10.x connection details 
     env.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory"); 
     env.put(Context.PROVIDER_URL, "t3://127.0.0.1:7101"); 
     return new InitialContext(env); 
    } 
} 

을하지만 이것을 실행하려고하면, 내가 얻을 : 여기

내가 (세 가지 방법은 adminManager에 호출을 제외하고 jdev를 전적으로 생성)를 테스트하기 위해 노력하고있어 클라이언트의 코드입니다 adminManager.addAdmin (즉, 조회 후입니다)와 라인에 다음과 같은 오류 :

javax.ejb.EJBException: EJB Exception: ; nested exception is: 
    Exception [EclipseLink-4002] (Eclipse Persistence Services - 1.0.2 (Build 20081024)): org.eclipse.persistence.exceptions.DatabaseException 
Internal Exception: java.sql.SQLException: Internal error: Cannot obtain XAConnection Creation of XAConnection for pool PGY2 failed after waitSecs:30 : java.sql.SQLException: Data Source PGY2 does not exist. 

왜 클라이언트가 데이터 소스를 찾을 수 없습니다, 나는 그것을 찾는 방법을 어떻게해야합니까?


편집

: 나는 배포 중에 웹 로직의 출력에 대해 자세히 살펴 갔고, 나는이를 발견했다. 나는 그것이 무엇을 의미하는지 아무 생각하지만 관련이있을 수 :

<2010.05.20. 0:50:43 CEST> <Error> <Deployer> <BEA-149231> <Unable to set the activation state to true for the application 'PGY2'. 
weblogic.application.ModuleException: 
    at weblogic.jdbc.module.JDBCModule.activate(JDBCModule.java:349) 
    at weblogic.application.internal.flow.ModuleListenerInvoker.activate(ModuleListenerInvoker.java:107) 
    at weblogic.application.internal.flow.DeploymentCallbackFlow$2.next(DeploymentCallbackFlow.java:411) 
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:37) 
    at weblogic.application.internal.flow.DeploymentCallbackFlow.activate(DeploymentCallbackFlow.java:74) 
    Truncated. see log file for complete stacktrace 
weblogic.common.ResourceException: is already bound 
    at weblogic.jdbc.common.internal.RmiDataSource.start(RmiDataSource.java:387) 
    at weblogic.jdbc.common.internal.DataSourceManager.createAndStartDataSource(DataSourceManager.java:136) 
    at weblogic.jdbc.common.internal.DataSourceManager.createAndStartDataSource(DataSourceManager.java:97) 
    at weblogic.jdbc.module.JDBCModule.activate(JDBCModule.java:346) 
    at weblogic.application.internal.flow.ModuleListenerInvoker.activate(ModuleListenerInvoker.java:107) 
    Truncated. see log file for complete stacktrace 
> 

답변

1

사실, 데이터 소스를 찾을 수 없습니다 EJB 클라이언트 아니다, 그것은 용기 내에서 실행 및 JPA를 사용하여 코드입니다. 좀 더 정확히 말하자면 JPA 공급자 - EclipseLink가 있습니다 - 찾을 수 없습니다. persistence.xml (<jta-data-source>)에 정의 된 데이터 소스 이름이 PGY2 DataSource의 JNDI 이름과 일치하는지 다시 확인하십시오.

WebLogic은 (JNDI 트리를 탐색하기 위해) JNDI 브라우저를 제공하며, 필요한 경우 데이터 원본이 등록 된 이름을 보려면이를 사용하십시오.

업데이트 : 데이터 소스의 JNDI 이름 필드에 줄 바꿈이 있습니까 (this blog post 참조)?

+0

DataSource의 설정에서 JNDI 이름은 "PGY2"로 설정되어 있습니다 (WebLogic은 JNDI 트리를 보려고 할 때 무한정 'StackOverflowError'를 생성하지만 서버의 서비스 탭에는 해당 데이터 소스가 표시됩니다. JNDI 이름). "PGY2"는'persistence.xml'에 설정된 이름이기도합니다. 사실 둘 중 하나를 변경하면 배포하려고 시도 할 때 PersistenceUnitInfo 모델에 transactionType JTA가 있지만 jtaDataSource라는 오류가 발생합니다.이 오류는 DataSource에 연결할 수 없음을 의미합니다. – suszterpatt

+0

@suszterpatt 실제로 이것은 좋은 테스트였습니다. –

+0

네, 그게 전부입니다. JNDI 이름 필드에서 줄 바꿈 그들을 삭제, 그리고 클라이언트가 지금 실행하려고하는 SQL 쿼리에 대해 불평하고있다, 그래서 분명히 모든 DB 연결 앞에 잘 있습니다. 고마워요! – suszterpatt

관련 문제