Worklight 6.0 不会在 Liberty - HSQLDB 上启动



我已经按照信息中心的文档在Windows 2008上设置了Liberty和Oracle数据库上的Worklight。(http://pic.dhe.ibm.com/infocenter/wrklight/v6r0m0/topic/com.ibm.worklight.help.doc/devref/t_transporting_apps_and_adapters.html - 将 IBM Worklight 应用程序部署到测试和生产环境(

当我启动自由服务器时,我在浏览器上收到此错误

应用程序类 'com.worklight.core.auth.impl.AuthenticationFilter.doFilter:110' 引发的异常javax.servlet.ServletException: Worklight Project 未初始化

at com.worklight.core.auth.impl.AuthenticationFilter.doFilter(AuthenticationFilter.java:110(at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:194(在 [内部类]

通过日志,它显示它没有启动,因为找不到 HSQLDB 驱动程序。

服务器.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 条目。通过网络.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 与服务器.xml中声明的名称略有不同。请记住,这些条目是由 ant 脚本创建的。这似乎与战争文件包含的内容(由 WL 工作室创建(不一致。

无论如何,我尝试了一下,并将服务器.xml jndi条目更改为与web.xml条目(jdbc/WorklightDS(完全相同。当我重新启动自由服务器时,它根本没有改变最终结果。错误消息和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)

后来我发现,如果我将服务器中的元素更改为所有属性的工作光值.xml它都可以工作。多么奇怪。

<application id="worklight" name="worklight" location="finance.war" type="war">

请,非常感谢任何帮助,以帮助我理解和修复它。

错误消息

">java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.hsqldb.jdbcDriver not in Worklight 平台或项目中找不到..."确实具有误导性。它最好读作">Worklight 服务器无法启动,因为没有数据源绑定到资源引用:'jdbc/WorklightDS'。重新配置服务器将解决此问题。有关更多信息,请在 IBM Worklight 信息中心中搜索"创建和配置数据库"。

错误消息的解释是,通过写入<application id="finance" name="finance" location="finance.war" type="war">,您根据将 Web 应用程序部署到 Liberty 配置文件中的 WebSphere Liberty 规则选择了上下文根/finance。对于此上下文根,您需要编写

<dataSource jndiName="finance/jdbc/WorklightDS" transactional="false">

这类似于为 Worklight 声明 JNDI 环境条目的方式(请参阅此处(。

最新更新