我在Liberty控制台&上收到以下异常。。在浏览器中。
javax.servlet.ServletException: Worklight Console initialization failed.Logged Exception: com.worklight.server.database.api.WorklightDataSourceException: FWLSE0194E: MobileFirst Server cannot be started because of failure while getting a connection from data-source bound to resource reference: jdbc/WorklightDS. Make sure the database is up, the credentials are correct and the driver is available for the server. [project worklight]
at com.worklight.core.auth.impl.AuthenticationFilter.verifyServletInitialized(AuthenticationFilter.java:451)
at com.worklight.core.auth.impl.AuthenticationFilter.doFilter(AuthenticationFilter.java:138)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:194)
at [internal classes]
在具有以下配置的UAT机器上运行/查看应用程序(战争)时。
环境:
- WL 6.3 EE
- WAS Liberty Core V8.5.5.4
- Oracle 11g
- Windows Server 2012 R2
worklight.properties
publicWorkLightHostname=localhost
publicWorkLightProtocol=http
publicWorkLightPort=9080
wl.db.url=jdbc:oracle:thin:@10.100.11.1:1529:gmaxem
wl.db.username=WRKLIGHT
wl.db.password=wrklight
wl.reports.db.url=jdbc:oracle:thin:@10.100.11.1:1529:gmaxem
wl.reports.db.username=WLRREPOR
wl.reports.db.password=wlrrepor
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>
<resource-ref>
<description>Reports Database</description>
<res-ref-name>jdbc/WorklightReportsDS</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
Liberty - server.xml
<application id="worklight" name="worklight" location="myapp.war" type="war" context-root="/worklight" >
<classloader delegation="parentLast">
<privateLibrary id="worklightlib_worklight">
<fileset dir="${shared.resource.dir}/lib" includes="worklight-jee-library.jar"/>
</privateLibrary>
</classloader>
</application>
<jndiEntry value="9080" jndiName="publicWorkLightPort"/>
<jndiEntry value="localhost" jndiName="publicWorkLightHostname"/>
<jndiEntry value="http" jndiName="publicWorkLightProtocol"/>
<jndiEntry value="10" jndiName="serverSessionTimeout"/>
<library id="OracleLib">
<fileset dir="${shared.resource.dir}/oracle" includes="*.jar"/>
</library>
<dataSource jndiName="jdbc/AppCenterDS" transactional="false">
<jdbcDriver libraryRef="OracleLib"/>
<properties.oracle driverType="thin" URL="jdbc:oracle:thin:@10.100.11.1:1529:gmaxem" user="WLAPPCENTER" password="wlappcenter"/>
</dataSource>
<dataSource jndiName="worklight/jdbc/WorklightDS" transactional="false">
<jdbcDriver libraryRef="OracleLib" />
<properties.oracle driverType="thin" url="jdbc:oracle:thin:@10.100.11.1:1529:gmaxem" user="WRKLIGHT" password="wrklight" />
</dataSource>
<dataSource jndiName="worklight/jdbc/WorklightReportsDS" transactional="false">
<jdbcDriver libraryRef="OracleLib" />
<properties.oracle driverType="thin" url="jdbc:oracle:thin:@10.100.11.1:1529:gmaxem" user="WLRREPOR" password="wlrrepor" />
</dataSource>
我还复制了:
Liberty上的 apps 文件夹仅包含这3个war文件。
答案 0 :(得分:0)
错误消息提及jdbc / WorklightDS,因此配置错误必须在<dataSource jndiName="worklight/jdbc/WorklightDS" ...>
元素中。
您使用的语法url="jdbc:oracle:thin:@//10.100.11.1:1529/WRKLIGHT"
是具有服务名称的JDBC URL的语法,但WRKLIGHT
可能不是服务名称,而是数据库的SID。 (服务名称通常包括一些点。)
您有两种选择:
url="jdbc:oracle:thin:@10.100.11.1:1529:WRKLIGHT"
ORACLE_HOME\network\admin\tnsnames.ora
中查找服务名称,并在网址中使用此服务名称,而不是WRKLIGHT
。答案 1 :(得分:0)
更新2出错:javax.servlet.ServletException:Worklight Console初始化失败。记录异常:java.lang.RuntimeException:FWLSE0206E:项目/ worklight初始化失败,因为数据源jdbc:oracle的项目数据库模式: thin:@ 10.100.11.1:1529:gmaxem来自版本N / A,服务器不支持版本6.3.0.00.20141127-1357。使用MobileFirst ant任务升级项目数据库架构。 [项目工作灯
这意味着与数据库的连接有效,但未找到预期在表中的表。
如果手动安装,则需要创建表的架构。 https://www-01.ibm.com/support/knowledgecenter/SSHS8R_6.3.0/com.ibm.worklight.installconfig.doc/admin/t_config_oracle_DB_manually_for_wladmin.html
答案 2 :(得分:0)
<强>解决强>
此问题已得到解决。
不幸的是,我的客户端根本没有创建 WLADMIN 数据库,我被告知它确实存在。正如我在另一个post中提到的那样,应用中心数据库正在创建错误的表格。
我没有权限安装任何数据库工具来交互/查看数据库结构。
注意: - 上述配置正确且工作正常。
答案 3 :(得分:0)
可能对某人有用,它应该是&#39; /&#39;端口名称和服务名称的分隔符
<dataSource beginTranForResultSetScrollingAPIs="true" beginTranForVendorAPIs="false" commitOrRollbackOnCleanup="rollback" connectionManagerRef="default-conn-mgr" isolationLevel="TRANSACTION_READ_COMMITTED" jndiName="jdbc/test" transactional="true" type="javax.sql.ConnectionPoolDataSource">
<jdbcDriver libraryRef="oracleJDBCJars"/>
<properties.oracle URL="jdbc:oracle:thin:@my-host.name.xxx.com:portnumber/service.name.com" password="xxx" user="test_usr"/>