当前位置: 首页 > 知识库问答 >
问题:

IBMWorklight 6.0-如何绑定数据源?

贺劲
2023-03-14

在将自定义war部署到WebSphere Liberty概要文件时,我得到了以下异常:

未找到类组织.hsqldb.jdbc驱动程序

我通过以下方式创建和配置了数据库:

http://pic.dhe.ibm.com/infocenter/wrklight/v6r0m0/index.jsp?topic=/com.ibm.worklight.help.doc/admin/t_configuring_liberty_profile_for_derby_manually.html

并编辑了server.xml文件,如下所示:

http://pic.dhe.ibm.com/infocenter/wrklight/v6r0m0/index.jsp?topic=/com.ibm.worklight.help.doc/admin/t_configuring_liberty_profile_manually.html

在 Web 中.xml生成的自定义 war,数据源的资源引用具有以下值:

<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添加到生成的war中。

我想问题与应用程序和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>

以及我在工作灯中修改的唯一属性。属性文件:

publicWorkLightHostname
publicWorkLightProtocol
publicWorkLightPort

如何使用数据源将自定义战争部署到 Liberty 配置文件?

谢谢。

共有1个答案

宦博超
2023-03-14

是误导性信息。它与jndi配置有关。

jndi引用应该在server.xml中包含CaixaProject,其名称如下

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

以及在网内。xml应该是这样的

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

给你推荐Worklight 6.0不会在Liberty上启动-HSQLDB

 类似资料:
  • 数据绑定 JXML 中的动态数据来自于该 Page 的 data字段。 简单绑定 数据绑定使用 Mustache 语法(双大括号)将变量包起来,可以作用于以下: 页面内容 <view> hello {{ name }} </view> Page({ data: { name: 'cortana' } }) 组件属性(需要在双引号之内) <view id="{{id}}"> </

  • attr绑定是用来为html元素绑定属性值的,这种绑定非常有用,例如我们需要想一个元素添加title属性,或者为img标签添加src属性。 示例代码: //.W片段 <a bind-attr="{ href: url, title: details }"> Report </a> //js片段 this.url=justep.Bind.observable("year-end.html"),

  • submit绑定只能用在form元素中,当form提交的时候被触发,并且默认阻止form的提交。因此我们通常在submit的处理函数中以ajax的方式提交form表单。 示例代码: //.W片段 <form bind-submit="doSomething"> ... form contents go here ... <button type="submit">Submit</butt

  • with绑定用来创建一个绑定上下文,在子元素内的所有绑定都在这个上下文中进行。 示例代码: //.W片段 <h1 bind-text="city"> </h1> <p bind-with="coords"> Latitude: <span bind-text="latitude"> </span>, Longitude: <span bind-text="longitude"> </span

  • foreach绑定用来处理数组,通常用来将一个数组绑定到一个列表或者table中。在foreach绑定中,我们可以使用if、with等嵌套绑定。 示例代码: //.W片段 <table> <thead> <tr><th>First name</th><th>Last name</th></tr> </thead> <tbody bind-foreach="people"> <tr>

  • selectedOptions绑定用在select元素中,用来绑定已选中的对象,通常被用在多选列表中。如果列表为单选列表(下拉列表),选中值可以用value绑定。 示例代码 //.W片段 <p> Choose some countries you'd like to visit: <select bind-options="availableCountries" bind-selectedO