0

Rational Application Developer 8.5 を使用して、WebSphere Portal 7.0 の IBM Web Content Manager (WCM) 用のカスタム ワークフロー アクション プラグインを開発しています。

プラグインは JNDI を使用して JDBC データ ソースを取得する必要がありますが、そうしようとすると次のエラーが発生します。

javax.naming.NameNotFoundException: Name comp/env/jdbc not found in context "java:".

「jdbc/wcmbulletins」という名前のデータ ソースが WebSphere Application Server で定義されています。

データ ソースを取得する Java コードは次のとおりです。

javax.naming.InitialContext ctx=new javax.naming.InitialContext();
javax.sql.DataSource ds=(javax.sql.DataSource)ctx.lookup("java:comp/env/jdbc/wcmbulletins");

RAD プロジェクトには、次の XML ファイルのみが含まれます。「persistence.xml」や、同様のSOの質問で言及されている他のファイルはありません。
WCM JSP コンポーネントによって参照される JSP ファイルもいくつかあります。JSP ファイルはプラグインとは関係がなく、JNDI または JDBC を使用しません。

ibm-web-bnd.xml:

<web-bnd
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://websphere.ibm.com/xml/ns/javaee"
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="jdbc/wcmbulletins" binding-name="jdbc/wcmbulletins"/>
</web-bnd>

ibm-web-ext.xml:

<web-ext
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://websphere.ibm.com/xml/ns/javaee"
xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-web-ext_1_0.xsd"
version="1.0">
    <jsp-attribute name="reloadEnabled" value="false"/>
    <jsp-attribute name="reloadInterval" value="10"/>
    <reload-interval value="3"/>
    <enable-directory-browsing value="false"/>
    <enable-file-serving value="true"/>
    <enable-reloading value="true"/>
    <enable-serving-servlets-by-class-name value="true"/>
</web-ext>

plugin.xml:

<plugin id="com.company.wcm.CompanyWCMPlugins"
    name="Company WCM Plugins"
    version="1.0.0"
    provider-name="Company Name Australia">

    <extension
        point="com.ibm.workplace.wcm.api.CustomWorkflowActionFactory"
        id="CompanyWorkflowActionFactory">
        <provider class="com.company.wcm.workflow.CompanyWorkflowActionFactory"/>
    </extension>
</plugin>

web.xml:

<web-app id="WebApp_ID" version="2.5"
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_2_5.xsd">
    <display-name>CompanyWCM_JSPs</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>
    <resource-ref id="ResourceRef_1377568155870">
        <description/>
        <res-ref-name>jdbc/wcmbulletins</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
        <res-sharing-scope>Shareable</res-sharing-scope>
    </resource-ref>
</web-app>

JNDI ルックアップを機能させるには何が必要ですか?

4

2 に答える 2

0

jdbc/wcmbulletinsリソース参照をバイパスして代わりに名前を使用するようにコードを変更するとどうなりますか?

また、DS はどの範囲で定義されていますか? クラスター レベルの場合は、名前cell/persistent/jdbc/wcmbulletinsを試して、何が得られるかを確認してください。

最後に、WebSphere命名トレースが常に存在します。を介してそれらを有効にしNaming=all、アプリを再実行し、trace.log をチェックして、何が起こっているのかについての洞察を得ることができます。

お役に立てれば、

スコット

于 2013-08-27T10:31:35.143 に答える
0

私の経験から、wcm プラグインは、それらが含まれている Web アプリケーションからある程度独立しています (OSGI などに関連しています)。たとえば、サーバーの起動時に、Web アプリケーション自体がインスタンス化される前にプラグインがインスタンス化されるため、Web アプリケーションからリソースを確実に検索することさえできない場合があります。

于 2013-10-18T07:58:58.480 に答える