2013-09-27 175 views
1

我按照所有Windows 2008上的 (http://pic.dhe.ibm.com/infocenter/wrklight/v6r0m0/topic/com.ibm.worklight.help.doc/devref/t_transporting_apps_and_adapters.html - 部署IBM工作灯应用到测试和生产环境)的信息中心文档设置工作灯上的自由和Oracle数据库工作灯6.0不启动自由 - HSQLDB

当我开始了自由的服务器,我得到这个错误在浏览器上

异常由应用程序类抛出“com.worklight.core.auth.impl.AuthenticationFilter.doFilter:110” javax.servlet.ServletException:工作灯项目未初始化

at com.worklight.core.auth.impl.AuthenticationFilter.doFilter(AuthenticationFilter.java:110) at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:194) at [internal classes]

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

server.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项的时间。去通web.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> 

的RE-REF-name是从什么是在server.xml中声明略有不同。请记住,这些条目是由ant脚本创建的。这似乎与战争文件包含的内容不一致(由WL Studio创建)。

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

后来我发现,如果我改变的元素在server.xml成为它的工作原理所有的属性值工作灯。它有多奇怪。

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

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

+0

Worklight默认使用HSQL。我建议你编辑你的问题,在你的项目中做出确切的修改,以便使用Oracle。 –

+0

只是做到了。请检查问题 – GDM

回答

1

错误消息“java.lang.RuntimeException:java.lang.ClassNotFoundException:在Worklight平台或项目中找不到类org.hsqldb.jdbcDriver ...”“确实是误导人的。它应该更好地阅读像“Worklight服务器无法启动,因为没有数据源绑定到资源引用:'jdbc/WorklightDS'。重新配置服务器将解决此问题。有关详细信息搜索”创建和配置数据库“在IBM工作灯信息中心。

为错误消息中的解释是,通过写<application id="finance" name="finance" location="finance.war" type="war">所选上下文根/finance,根据在Deploying a web application to the Liberty profile在WebSphere自由规则。对于这种情况下的根,你需要写

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

这是类似环境条目需要如何JNDI进行申报工作灯(见here)。

+0

嘿,它解决了这个问题。非常感谢。我希望WL文档能够清楚地说明,甚至指向自由链接。 – GDM

+0

我们已经开通了一个缺陷来解决这个问题。如果您可以请将此标记为已回答... :) –