错误EclipseLink-4021在运行时创建EntityManager时为什么?
问题描述:
我想在运行时创建的EntityManager,所以我可以从config.xml中错误EclipseLink-4021在运行时创建EntityManager时为什么?
这里设置不同的用户名和密码是创造了EntityManager
map.put(PersistenceUnitProperties.JDBC_USER, SystemConfig.getConfig().getString("jdbcUser"));
map.put(PersistenceUnitProperties.JDBC_PASSWORD, SystemConfig.getConfig().getString("jdbcPassword"));
map.put(PersistenceUnitProperties.JDBC_URL, SystemConfig.getConfig().getString("jdbcUrl"));
map.put(PersistenceUnitProperties.JDBC_DRIVER, "net.sourceforge.jtds.jdbc.Driver");
EntityManager eMgr = Persistence.createEntityManagerFactory("myPU", map).createEntityManager();
在UNIX我的程序结构的代码: 〜/测试/ myProgram.jar 〜/测试/ lib目录/ *。JAR但是(所有图书馆和了jdbc.jar这里)
当我运行该文件夹/测试程序里面的程序工作正常/ 当我在根目录下运行程序〜/我得到Ex ception [EclipseLink-4021]。 任何想法为什么?
注意:最终我需要使用cron作业来安排程序。
[EL Info]: 2013-05-06 12:10:18.989--ServerSession(1729331687)--EclipseLink, version: Eclipse Persistence Services - 2.4.1.v20121003-ad44345
[EL Severe]: ejb: 2013-05-06 12:10:19.002--ServerSession(1729331687)--Exception [EclipseLink-4021] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.DatabaseException
Exception Description: Unable to acquire a connection from driver [net.sourceforge.jtds.jdbc.Driver], user [null] and URL [null]. Verify that you have set the expected driver class and URL. Check your login, persistence.xml or sessions.xml resource. The jdbc.driver property should be set to a class that is compatible with your database platform
Exception in thread "main" javax.persistence.PersistenceException: Exception [EclipseLink-4021] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.DatabaseException
Exception Description: Unable to acquire a connection from driver [net.sourceforge.jtds.jdbc.Driver], user [null] and URL [null]. Verify that you have set the expected driver class and URL. Check your login, persistence.xml or sessions.xml resource. The jdbc.driver property should be set to a class that is compatible with your database platform
at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:602)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:186)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:278)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:304)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:282)
at dcsmailcheck.MailResend.<init>(MailResend.java:61)
at dcsmailcheck.Main.main(Main.java:49)
Caused by: Exception [EclipseLink-4021] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.DatabaseException
Exception Description: Unable to acquire a connection from driver [net.sourceforge.jtds.jdbc.Driver], user [null] and URL [null]. Verify that you have set the expected driver class and URL. Check your login, persistence.xml or sessions.xml resource. The jdbc.driver property should be set to a class that is compatible with your database platform
at org.eclipse.persistence.exceptions.DatabaseException.unableToAcquireConnectionFromDriverException(DatabaseException.java:376)
at org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java:91)
at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:685)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:215)
at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:542)
... 6 more
答
由于您的代码在〜/ test文件夹中工作,似乎SystemConfig.getConfig()
无法加载该位置的属性。确保已将您的属性的路径添加到CLASSPATH。
是的,谢谢。它混淆了我在其他情况下,如果SystemConfig.getConfig()有问题,它会给出一个错误,“jdbcUser”或任何不可访问或不存在等,但在上述情况下使用时,它不会提示该错误,而是提示EclipseLink错误... – codeIsFun 2013-05-08 01:20:01