インフォセンターのドキュメントに従って、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">
どうか、私がそれを理解して修正するのを助けるために、どんな助けも大歓迎です。