Bu benim persistence.xml
:jndi.properties'ten enjeksiyon sonrası JNDI'da veri kaynağı bulunamadı?
<persistence>
<persistence-unit name="MyUnit">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>jdbc/abcDS</jta-data-source>
</persistence-unit>
</persistence>
Bu gerçek bir veri kaynağı ile gerçek uygulama sunucusu beri test sırasında veri kaynağı oluşturmak gerekiyordu src/test/resources
dan jndi.properties
dosya, devamsızlık olduğu:
java.naming.factory.initial=org.apache.openejb.client.LocalInitialContextFactory
jdbc/abcDS=new://Resource?type=DataSource
jdbc/abcDS.JdbcDriver=org.hsqldb.jdbcDriver
jdbc/abcDS.JdbcUrl=jdbc:hsqldb:mem:testdb
jdbc/abcDS.JtaManaged=true
jdbc/abcDS.DefaultAutoCommit=false
jdbc/abcDS.UserName=sa
jdbc/abcDS.Password=
Bu sınama sınıfı:
ot oluşturdu ve ben de görmeye devam ediyorum:[...]
javax.naming.NameNotFoundException: Name "jdbc/abcDS" not found.
at org.apache.openejb.core.ivm.naming.IvmContext.federate(IvmContext.java:193)
at org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:150)
at org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:124)
at org.apache.openejb.core.ivm.naming.ContextWrapper.lookup(ContextWrapper.java:115)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at com.XXX.FinderTest.startEJB(FinderTest.java:31)
[...]
Neyi yanlış yapıyorum? Lütfen yardım et!
ps. (??? neler) bu şekilde çalışır Bu arada: openejb:Resource/jdbc/abcDS
arama Yanı sıra injection in your TestCase alabilirsiniz eğer
ic.lookup("java:/openejb/Resource/jdbc/abcDS");
Sunucu günlüklerinde herhangi bir şey var mı? –
@ Thorbjørn "Sunucu" yok, test sürüşü döngüsü var. Aslında, gerçek bir uygulama sunucusu yerine gömülü bir OpenEJB var. – yegor256