0

WebSphere 8.5 と JSF2.0 を使用していますが、WorkManager の使用に問題があります (websphere から - 非同期 Bean)。Work インターフェイスを実装するworkManagerExampleクラスがあります。アプリケーションから workManagerExample を呼び出すと、アプリケーションに既にロードされているクラスのメソッドを取得できなくなります。状況:アプリに Utility クラスがあります (正常に動作しています) が、workManagerExample から (Utility.someMethod のように) それを使用しようとすると、NPE が発生します。「startWork(WorkManagerExample)」を呼び出す前に Utility クラスを確認しましたが、null ではなく、通常どおり使用できます。ところで、アプリから既にロードされているクラスを呼び出さなくても、workManager は正常に動作しています。utility クラスを workManagerExample コンストラクターのパラメーターとして渡すことができません (これは、クライアント/顧客担当者からの制限です)。私の質問は、この Asyn Bean の Utility クラス関数を使用しなくなった理由です。

web.xml
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
//some extra config not related
    <resource-ref>
        <description>WorkManager</description>
        <res-ref-name>wm/default</res-ref-name>
        <res-type>com.ibm.websphere.asynchbeans.WorkManager</res-type>
        <res-auth>Container</res-auth>
        <res-sharing-scope>Shareable</res-sharing-scope>
    </resource-ref> 
</web-app>

ibm-web-bnd.xml
<web-bnd xmlns="http://websphere.ibm.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-web-bnd_1_0.xsd"
version="1.0">
    <virtual-host name="default_host" />
    <resource-ref name="wm/default" binding-name="wm/default" />
</web-bnd>

これは私のリファレンス ガイドですhttp://www.bencode.net/blog/2014/07/26/was-async-beans/

一部の Java コード: Class1.java

WorkManager workManager = getWorkManager();
if (workManager!=null){   
  GetInfoWork currentOfferWork = new GetInfoWork(); //GetInfoWork implements Work
  workManager.startWork(currentOfferWork);  
}

GetInfoWork.java で、「FacesContext.getCurrentInstance();」を試すと、私は常に NULL を取得しますが、Class1.java から試してみると、期待どおりに動作します。フォルダー構造は通常の JSF2 Web アプリと同じです。これは既存のアプリケーションであり、workManager (com.ibm.ws.runtime.jar から) を介してこの非同期 Bean 機能を追加したいと考えています。

4

1 に答える 1