0

カスタム war を WebSphere Liberty プロファイルにデプロイしているときに、次の例外が発生します。

クラス org.hsqldb.jdbcDriver が見つかりません

次の方法でデータベースを作成および構成しました。

http://pic.dhe.ibm.com/infocenter/wrklight/v6r0m0/index.jsp?topic=%2Fcom.ibm.worklight.help.doc%2Fadmin%2Ft_configuring_liberty_profile_for_derby_manually.html

そして、次のように server.xml ファイルを編集しました。

http://pic.dhe.ibm.com/infocenter/wrklight/v6r0m0/index.jsp?topic=%2Fcom.ibm.worklight.help.doc%2Fadmin%2Ft_configuring_liberty_profile_manually.html

生成されたカスタム 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 をデプロイするにはどうすればよいですか?

ありがとうございました。

4

1 に答える 1

0

誤解を招くメッセージです。これは、jndi 構成に関連しています。

jndi 参照には、server.xml のこのように名前に CaixaProject を含める必要があります。

<dataSource jndiName="CaixaProject/jdbc/WorklightDS"
<dataSource jndiName="CaixaProject/jdbc/WorklightReportsDS" 

そしてweb.xmlの内部は次のようになります

<res-ref-name>CaixaProject/jdbc/WorklightDS</res-ref-name>
<res-ref-name>CaixaProject/jdbc/WorklightReportsDS</res-ref-name>

Worklight 6.0 が Liberty で開始しない - HSQLDB

于 2013-09-30T17:09:18.450 に答える