면책 조항 : 저는 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
>
DataSource의 설정에서 JNDI 이름은 "PGY2"로 설정되어 있습니다 (WebLogic은 JNDI 트리를 보려고 할 때 무한정 'StackOverflowError'를 생성하지만 서버의 서비스 탭에는 해당 데이터 소스가 표시됩니다. JNDI 이름). "PGY2"는'persistence.xml'에 설정된 이름이기도합니다. 사실 둘 중 하나를 변경하면 배포하려고 시도 할 때 PersistenceUnitInfo 모델에 transactionType JTA가 있지만 jtaDataSource라는 오류가 발생합니다.이 오류는 DataSource에 연결할 수 없음을 의미합니다. – suszterpatt
@suszterpatt 실제로 이것은 좋은 테스트였습니다. –
네, 그게 전부입니다. JNDI 이름 필드에서 줄 바꿈 그들을 삭제, 그리고 클라이언트가 지금 실행하려고하는 SQL 쿼리에 대해 불평하고있다, 그래서 분명히 모든 DB 연결 앞에 잘 있습니다. 고마워요! – suszterpatt