WAS 6.1 から 8.5 に移行しています。6.1 でデプロイした EAR ファイルを 8.5 にコピーしただけです。アプリケーションは正常に動作し、web-sphere 管理者が Java2 セキュリティをオンにすることを決定するまでは満足していました。現在の was.policy ファイルには java.security.AllPermission がありました。しかし、これはJava2セキュリティでは機能しないと思うので、変更して、読み取り/書き込みされるすべてのファイルにio権限を付与しました。この後、権限関連のエラーはすべてなくなりましたが、奇妙な例外が発生して立ち往生しています。
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'wsJtaTm' defined in ServletContext resource [/WEB-INF/applicationContext.xml]:
Instantiation of bean failed; nested exception is
org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.transaction.jta.WebSphereTransactionManagerFactoryBean]:
Constructor threw exception; nested exception is
org.springframework.transaction.TransactionSystemException: Could not find WebSphere 5.1/6.0/6.1 TransactionManager factory class; nested exception is
java.lang.ClassNotFoundException: com.ibm.ws.Transaction.TransactionManagerFactory
私の春のトランザクションは次のように定義されています。
<bean id="wsJtaTm"
class="org.springframework.transaction.jta.WebSphereTransactionManagerFactoryBean" />
<bean id="transactionManager"
class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="transactionManager" ref="wsJtaTm" />
</bean>
Java2 セキュリティがオフになっているときにアプリが機能する理由と、Java2 セキュリティをオンにすると ClassNotFound 例外がスローされる理由がわかりません。
私の知る限り、com.ibm.ws.Transaction.TransactionManagerFactory はサーバー自体によってロードされ、アプリで使用できるようにする必要があります。このクラスを持つアプリにはjarがありません。
エラーは、Bean ID wsJtaTm のコンストラクターから発生しています。was.policy ファイルに何か不足していますか?
さらに調査したところ、このクラスは、サーバー インストールのプラグイン フォルダーにある com.ibm.ws.runtime.jar という名前の jar ファイル内に存在することがわかりました。java2 セキュリティがオンになっていると、この jar が非表示になる理由がわかりません。
spring v2.5を使用していることに注意してください
親切に助けてください。