1

config.xml から別のユーザー名とパスワードを設定できるように、実行時に 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 での私のプログラム構造: ~/test/myProgram.jar ~/test/lib/*.jar (すべてのライブラリと jdbc.jar がここにあります)

フォルダー /test/ 内でプログラムを実行すると、プログラムは正常に動作しますが、ルート ~/ でプログラムを実行すると、例外 [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
4

1 に答える 1

0

あなたのコードはフォルダー ~/test で動作するため、SystemConfig.getConfig()その場所からのプロパティの読み込みに失敗しているようです。プロパティへのパスを CLASSPATH に追加したことを確認してください。

于 2013-05-06T05:05:20.343 に答える