0

在将自定义战争部署到 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

在生成的自定义战争的 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 中不再有效。

还尝试将文件 ibm-web-bnd.xml 添加到生成的战争中。

我猜这个问题与应用程序和 Liberty 配置文件数据源之间的绑定有关。

我能够部署自定义战争的唯一方法是在 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 配置文件?

谢谢你。

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 回答