Ceci est mon persistence.xml
:Pourquoi la source de données n'est pas trouvée dans JNDI après l'injection de jndi.properties?
<persistence>
<persistence-unit name="MyUnit">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>jdbc/abcDS</jta-data-source>
</persistence-unit>
</persistence>
C'est un fichier jndi.properties
de src/test/resources
qui est censé créer une source de données au cours des essais, depuis un serveur d'application réel avec une source de données est absent:
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=
Cette est la classe de test:
public class FinderTest {
@BeforeClass
public static void startEJB() throws Exception {
InitialContext ic = new InitialContext();
ic.lookup("jdbc/abcDS");
}
}
Malheureusement, la source de données est n ot créé et c'est ce que je continue à voir:
[...]
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)
[...]
Qu'est-ce que je fais mal? S'il vous plaît aider!
ps. Par la façon dont il fonctionne de cette façon (ce qui se passe ???):
ic.lookup("java:/openejb/Resource/jdbc/abcDS");
Quelque chose dans les journaux du serveur? –
@ Thorbjørn Il n'y a pas de "serveur", c'est un cycle de test. En fait, c'est un OpenEJB embarqué au lieu d'un vrai serveur d'applications. – yegor256