カスタム war を WebSphere Liberty プロファイルにデプロイしているときに、次の例外が発生します。
クラス org.hsqldb.jdbcDriver が見つかりません
次の方法でデータベースを作成および構成しました。
そして、次のように server.xml ファイルを編集しました。
生成されたカスタム war の web.xml では、データソースのリソース参照に次の値が含まれます。
<res-ref-name>jdbc/WorklightDS</res-ref-name>
<res-ref-name>jdbc/WorklightReportsDS</res-ref-name>
ただし、サーバー xml で定義されたデータソースには、次のようなものがあります。
<dataSource jndiName="worklight/jdbc/WorklightDS" transactional="false" statementCacheSize="10">
<dataSource jndiName="worklight/jdbc/WorklightReportsDS" transactional="false" statementCacheSize="10">
とにかく、データソース jndi を変更しようとしましたが、同じ例外が発生します。
また、プロパティ wl.db.jndi.name および wl.reports.db.jndi.name を worklight.properties ファイルに追加しようとしましたが、成功しませんでした。これらのプロパティは、WL6.0 では無効になっていると思います。
また、生成された war にファイル ibm-web-bnd.xml を追加しようとしました。
この問題は、アプリケーションと Liberty プロファイル データソース間のバインディングに関連していると思います。
カスタム war を展開できた唯一の方法は、workligh.properties ファイルで Derby データベースを設定することです。
wl.db.url=jdbc:derby:C:/WebSphere/Worklight60DBs/WRKLGHT;create=true
wl.reports.db.url=jdbc:derby:C:/WebSphere/Worklight60DBs/WLREPORT;create=true
wl.db.username=WORKLIGHT
エラーの場合、これは私のserver.xmlです:
<featureManager>
<feature>jsp-2.2</feature>
<feature>ssl-1.0</feature>
<feature>servlet-3.0</feature>
<feature>jdbc-4.0</feature>
<feature>appSecurity-1.0</feature>
<feature>jndi-1.0</feature>
</featureManager>
<application id="CaixaProject" name="CaixaProject" location="CaixaProject.war" type="war">
<classloader delegation="parentLast">
<commonLibrary>
<fileset dir="${shared.resource.dir}/lib" includes="worklight-jee-library.jar"/>
</commonLibrary>
</classloader>
</application>
<webContainer invokeFlushAfterService="false"/>
<library id="DerbyLib">
<fileset dir="${shared.resource.dir}/derby" includes="derby.jar"/>
</library>
<dataSource jndiName="jdbc/WorklightDS" transactional="false" statementCacheSize="10">
<jdbcDriver libraryRef="DerbyLib" javax.sql.ConnectionPoolDataSource="org.apache.derby.jdbc.EmbeddedConnectionPoolDataSource"/>
<properties.derby.embedded databaseName="C:/WebSphere/Worklight60DBs/WRKLGHT" user="WORKLIGHT" shutdownDatabase="false" connectionAttributes="upgrade=true"/>
<connectionManager connectionTimeout="180" maxPoolSize="10" minPoolSize="1" reapTime="180" maxIdleTime="1800" agedTimeout="7200" purgePolicy="EntirePool" />
</dataSource>
<dataSource jndiName="jdbc/WorklightReportsDS" transactional="false" statementCacheSize="10">
<jdbcDriver libraryRef="DerbyLib" javax.sql.ConnectionPoolDataSource="org.apache.derby.jdbc.EmbeddedConnectionPoolDataSource"/>
<properties.derby.embedded databaseName="C:/WebSphere/Worklight60DBs/WLREPORT" user="WORKLIGHT" shutdownDatabase="false" connectionAttributes="upgrade=true"/>
<connectionManager connectionTimeout="180" maxPoolSize="10" minPoolSize="1" reapTime="180" maxIdleTime="1800" agedTimeout="7200" purgePolicy="EntirePool" />
</dataSource>
そして、worklight.properties ファイルで変更した唯一のプロパティ:
publicWorkLightHostname
publicWorkLightProtocol
publicWorkLightPort
データソースを使用して Liberty プロファイルにカスタム war をデプロイするにはどうすればよいですか?
ありがとうございました。