2016-12-12 8 views
0

создать источник данных, каквнедренный дерби начинается с ошибкой J2C

@DataSourceDefinition 
(
    name="java:app/env/myDataSource", 
    className="org.apache.derby.jdbc.EmbeddedXADataSource40", 
    databaseName="myDB", 
    properties= 
    { 
    // Vendor properties for Derby Embedded JDBC driver: 
    "createDatabase=create", 
    "connectionAttributes=upgrade=true", 

    // Custom properties for WebSphere Application Server: 
    "connectionTimeout=60", 
    "dataStoreHelperClass=com.ibm.websphere.rsadapter.DerbyDataStoreHelper", 
    "validateNewConnection=true", 
    "validateNewConnectionRetryCount=5" 
    }, 
    serverName="" 
) 

Тогда я положил его в код запуска.

@Startup 
@Singleton 
public class StartUp { 

    @Resource(lookup = "java:app/env/myDataSource") 
    private javax.sql.DataSource dataSource; 
... 

Когда сервер WebSphere запускается, я получил ошибку ниже и более

[12/12/16 15: 05: 28: 136] EST 0000003b J2CXAResource W J2CA0061W: Ошибка при создании XA Соединение и ресурс java.lang.Exception: Параметр xaResInfo не имеет обертки RA, и обертка RA не может быть решена с использованием ключа RA. в com.ibm.ejs.j2c.J2CXAResourceFactory $ 1.Run (J2CXAResourceFactory.java:264) на com.ibm.ws.security.util.AccessController.doPrivileged (AccessController.java:118) в com.ibm .ejs.j2c.J2CXAResourceFactory.getXAResource (J2CXAResourceFactory.java:199) на com.ibm.ws.Transaction.JTA.XARecoveryData.getXARminst (XARecoveryData.java:492) на com.ibm.ws.Transaction.JTA .XARecoveryData.recover (XARecoveryData.java:658) на com.ibm.tx.jta.impl.PartnerLogTable.recover (PartnerLogTable.java:432) на com.ibm.tx.jta.impl.RecoveryManager.resync (RecoveryManager.java:1543) в com.ibm.tx.jta.impl.RecoveryManager.performResync (RecoveryManager.java:2276) в com.ibm.ws.tx.jta.RecoveryManager.performResync (RecoveryManager.java:119) на ком. ibm.tx.jta.impl.RecoveryManager.run (RecoveryManager.java:2229) в java.lang.Thread.run (Thread.java:798)

Любые мысли? Я думаю, что встроенное дерби не нуждается в J2C.

+0

это WebSphere традиционный или Liberty? Я опробовал эту точную настройку на Liberty, и она отлично работала. Вы хотите возможности XA? Если нет, вы можете просто перейти на источник данных, отличных от XA, например: 'className =" org.apache.derby.jdbc.EmbeddedConnectionPoolDataSource40 "' –

+0

@aguibert Это традиционный. Он должен работать так, как раньше.Но внезапно, когда я запускаю сервер сегодня, он дает ошибку. Интересно, что происходит? Да, мне нужно ха. – rickcoup

+0

Я не уверен, что происходит, но сервер пытается выполнить восстановление XA, которое не работает. Какую версию WAS вы используете? Я нашел точное сообщение об ошибке, которое вы видите, но похоже, что оно было исправлено в WAS 7.0 (около 2011 года) https://www.ibm.com/developerworks/community/forums/html/topic?id=77777777-0000-0000 -0000-000014284573 –

ответ

1

Как сказал aguibert, сервер пытается выполнить восстановление XA, которое не работает. Вот ссылка с информацией о восстановлении после сбоя восстановления:

https://www.ibm.com/developerworks/community/blogs/aimsupport/entry/recovering_from_failed_transaction_recovery_websphere_application_server?lang=en

В тех случаях, когда регистрируется сделка не касается, вы можете просто остановить сервер приложений, перейдите к tranlog и partnerlog каталоги и удалить содержимое (log1 & log2) обоих каталогов, а затем перезапустить сервер приложений.

Для справки, если не будет изменен конфигурации, каталоги по умолчанию, как правило, находятся в пути:

C: WebSphere \ AppServer \ Profiles \ AppSrv01 \ tranlog \ MyNode01Cell \ MyNode02 \ server1 \ сделка \ partnerlog \

C: WebSphere \ AppServer \ Profiles \ AppSrv01 \ tranlog \ MyNode01Cell \ MyNode02 \ server1 \ сделка \ tranlog \

+1

Вы прибили ее. Вероятно, это связано с тем, что я не закрыл затмение должным образом раньше. – rickcoup

+0

Это определенно сделает это. Раньше я потерял рабочие пространства, потому что я не закрывал затмение должным образом. – marks