1

インフォセンターのドキュメントに従って、Worklight on Liberty と Oracle Database をすべて Windows 2008 でセットアップしました。 devref/t_transporting_apps_and_adapters.html - テスト環境および実稼働環境への IBM Worklight アプリケーションのデプロイ)

Liberty サーバーを始動すると、ブラウザーでこのエラーが発生します

アプリケーション・クラス「com.worklight.core.auth.impl.AuthenticationFilter.doFilter:110」によってスローされる例外 javax.servlet.ServletException: Worklight プロジェクトが初期化されていません

[内部クラス] で com.worklight.core.auth.impl.AuthenticationFilter.doFilter(AuthenticationFilter.java:110) で

ログを調べると、HSQLDB ドライバーが見つからないために起動しなかったことが示されています。

server.xml には次のものがあります。

<application id="finance" name="finance" location="finance.war" type="war">
 <classloader delegation="parentLast">
 <commonLibrary>
 <fileset dir="${shared.resource.dir}/worklight/lib" includes="worklight-jee-library.jar"/>
 </commonLibrary>
 </classloader>
</application>

<library id="worklight/OracleLib">
 <fileset dir="${shared.resource.dir}/worklight/oracle" includes="*.jar"/>
</library>

<!-- Declare the IBM Worklight Console database. -->
<dataSource jndiName="worklight/jdbc/WorklightDS" transactional="false">
  <jdbcDriver libraryRef="worklight/OracleLib"/>
  <properties.oracle driverType="thin" URL="jdbc:oracle:thin:@localhost:1521:ORCLWL" user="WORKLIGHTDIS" password="WORKLIGHTDIS"/>
</dataSource>

さらに一歩進んで、WAR ファイルがデータベースの jndi エントリにどのようにリンクしているかを確認しました。web.xml ファイルを調べると、次のことがわかりました。

<resource-ref>
<description>Worklight Server Database</description> 
<res-ref-name>jdbc/WorklightDS</res-ref-name> 
<res-type>javax.sql.DataSource</res-type> 
<res-auth>Container</res-auth> 
</resource-ref>

res-ref-name は、server.xml で宣言されているものとは少し異なります。これらのエントリは、ant スクリプトによって作成されたことに注意してください。これは、war ファイルの内容 (WL Studio で作成) と矛盾しているようです。

とにかく試してみて、server.xml jndi エントリーを web.xml エントリー (jdbc/WorklightDS) とまったく同じになるように変更しました。liberty サーバーを再起動しても、最終結果はまったく変わりませんでした。エラー メッセージと HSQL ドライバーのことがログに表示され続けました。

これは例外です

nested exception is java.lang.RuntimeException: java.lang.ClassNotFoundException: Class                 org.hsqldb.jdbcDriver not found in Worklight platform or project /finance
at  org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275)

後で、server.xml の要素をすべての属性の worklight 値に変更すると、機能することがわかりました。奇妙です。

<application id="worklight" name="worklight" location="finance.war" type="war">

どうか、私がそれを理解して修正するのを助けるために、どんな助けも大歓迎です。

4

1 に答える 1

1

エラー メッセージ「java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.hsqldb.jdbcDriver not found in Worklight プラットフォームまたはプロジェクト ...」は、実際には誤解を招くものです。「ワークライト サーバーを開始できないため、データ ソースがリソース参照 'jdbc/WorklightDS' にバインドされていません。サーバーを再構成すると、この問題が解決します。詳しくは、「データベースの作成と構成」を検索してください。 「 IBM Worklight インフォメーション・センターで。

エラー・メッセージの説明は、 Web アプリケーションの Liberty プロファイルへのデプロイの WebSphere Liberty 規則に従って、書き込みによって<application id="finance" name="finance" location="finance.war" type="war">コンテキスト・ルートを選択したことです。このコンテキスト ルートについては、次のように記述する必要があります。/finance

<dataSource jndiName="finance/jdbc/WorklightDS" transactional="false">

これは、Worklight 用に JNDI 環境エントリーを宣言する必要がある方法と似ています (こちらを参照)。

于 2013-09-29T09:17:41.920 に答える