1

Websphere 8 アプリケーション サーバーを使用しており、Web アプリケーションでサーバー ワークマネージャーを使用したいと考えています。javax.resource.spi.work.WorkmanagerSprings で使用するjca workmanager への参照を取得しようとしていますorg.springframework.jca.work.WorkManagerTaskExecutor

web.xml の resource-ref は次のようになります。

<resource-ref>
 <res-ref-name>workmanager/web</res-ref-name>
 <res-type>javax.resource.spi.work.WorkManager</res-type>
 <res-auth>Container</res-auth>
 <res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>

その構成を使用すると、次の例外が発生します。

Caused by: com.ibm.ws.asynchbeans.exception.AsynchBeanException: ASYN0064E: The value javax.resource.spi.work.WorkManager of the res-type resource reference element WorkManager is not right. Only the following values are allowed: com.ibm.websphere.asynchbeans.WorkManager, commonj.work.WorkManager.
at com.ibm.ws.asynchbeans.naming.WorkManagerFactory.validateWMResRef(WorkManagerFactory.java:379)
at com.ibm.ws.asynchbeans.naming.WorkManagerFactory.getObjectInstance(WorkManagerFactory.java:147)
at org.apache.aries.jndi.ObjectFactoryHelper$7.run(ObjectFactoryHelper.java:338)
at java.security.AccessController.doPrivileged(AccessController.java:362)
at org.apache.aries.jndi.Utils.doWithRestoredPrivileges(Utils.java:155)
at org.apache.aries.jndi.ObjectFactoryHelper.getObjectInstanceUsingObjectFactoryBuilders(ObjectFactoryHelper.java:336)
at org.apache.aries.jndi.ObjectFactoryHelper.doGetObjectInstance(ObjectFactoryHelper.java:136)
at org.apache.aries.jndi.ObjectFactoryHelper.access$000(ObjectFactoryHelper.java:60)
at org.apache.aries.jndi.ObjectFactoryHelper$1.run(ObjectFactoryHelper.java:98)
at java.security.AccessController.doPrivileged(AccessController.java:327)
at org.apache.aries.jndi.Utils.doPrivileged(Utils.java:146)
at org.apache.aries.jndi.ObjectFactoryHelper.getObjectInstance(ObjectFactoryHelper.java:96)
at org.apache.aries.jndi.OSGiObjectFactoryBuilder.getObjectInstance(OSGiObjectFactoryBuilder.java:57)
at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:349)
at com.ibm.ws.naming.util.Helpers.processSerializedObjectForLookupExt(Helpers.java:993)
... 89 more

ここでは、リソース参照のタイプがcom.ibm.websphere.asynchbeans.WorkManagerorでなければならないと言っていますcommonj.work.WorkManager。どちらも JCA-Workmanager-Interface から拡張されていません。

commonj.work.WorkManagerリソース タイプをSpringsに切り替えorg.springframework.scheduling.commonj.WorkManagerTaskExecutorてアプリケーションで使用すると、すべて正常に動作します。

JCA Workmanager を Websphere で動作させるには、サーバー側で何か特別な構成を行う必要がありますか? 実装を切り替えるための設定が管理コンソールに見つかりませんでした。Websphere 8 は Java EE 6 をサポートしているため、JCA を処理できるはずです。

4

1 に答える 1

1

一般的な WorkManagerTaskExecutor ではなく、JCA 固有の WorkManagerTaskExecutor を使用したいのはなぜですか? JCA WorkManager は、任意の EE コンポーネントによって参照されるのではなく、リソース アダプターによってのみ使用されることを意図しており、JCA 固有の WorkManagerTaskExecutor のSpring ドキュメントはそれと一致しています。

これは主に、JCA ResourceAdapter 実装内での使用を目的としています

commonj WorkManager と対応する WorkManagerTaskExecutor を使用するだけです。

于 2015-03-21T21:26:26.700 に答える