在WAS Liberty(WL)上配置Oracle数据源设置-失败
我在Liberty控制台和浏览器上收到以下异常信息。在WAS Liberty(WL)上配置Oracle数据源设置-失败,oracle,websphere-liberty,ibm-mobilefirst,Oracle,Websphere Liberty,Ibm Mobilefirst,我在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 w
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机器上运行/查看应用程序(war)时
环境:
- WL 6.3 EE
- WAS Liberty Core V8.5.5.4
- 甲骨文11g
- Windows Server 2012 R2
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>
<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>
Worklight服务器数据库
jdbc/WorklightDS
javax.sql.DataSource
容器
报告数据库
jdbc/WorklightReportsDS
javax.sql.DataSource
容器
Liberty-server.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>
<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>
我还抄录了:
- jdbc jar(ojdbc6.jar)位于Liberty\usr\shared\resources\oracle
- worklight jee library.jaratLiberty\usr\shared\resources\lib
- myapp.waratLiberty\usr\servers\WorklightServer\apps
- myapp.war
- appcenterconsole.war
- applicationcenter.war
元素中
您使用的语法是带有服务名称的jdbc url的语法,但可能不是服务名称,而是数据库的SID。(服务名称通常包括一些点。)
您有两个选择:
- 使用引用SID的语法:
url=“jdbc:oracle:thin:@10.100.11.1:1529:WRKLIGHT”
- 在文件
中查找服务名称,并在URL中使用此服务名称,而不是ORACLE\u HOME\network\admin\tnsnames.ora
WRKLIGHT
已解决 这个问题已经解决了 不幸的是,我的客户根本没有创建WLADMIN数据库,我被告知它确实存在。另外,正如我在另一篇文章中提到的,app center数据库创建了错误的表 我没有权限安装任何数据库工具来交互/查看数据库结构
注意:-上述配置正确且运行良好。可能对某些人有用,它应该是端口名和服务名的“/”分隔符
<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"/>
这可能是服务器.xml中的输入错误或错误,因为两个数据源使用相同的JNDI
jndName=“worklight/jdbc/WorklightDS”
,第二个数据源应该不同-jndName=“worklight/jdbc/WorklightReportsDS”
我无法理解这一点,两者都使用不同的源?在server.xml
中不能有两个具有相同JNDI名称的数据源。引用WLRREPOR的数据源应该具有worklight/jdbc/WorklightReportsDS
jndiName。请检查此页面,并尝试通过属性而不是jdbc url配置数据源。是的,两个数据源都是a-sources是不同的。这是发布问题时在这里出现的复制/过去错误。所以第二个是worklight/jdbc/WorklightReports。我明白了,让我试试这个。它不起作用。我尝试了url=“jdbc:oracle:thin:@10.100.11.1:1529:myDBSID”,也尝试了url=“jdbc:oracle:thin:@//10.100.11.1:1529/myDBSID”和url=“jdbc:oracle:thin:@//10.100.11.1:1529/WRKLIGHT”根据这是信息中心:您还需要在第二个数据源声明中使用不同的jndiName,如.BTW所述,当应用上述更改时,它会给出:”javax.servlet.ServletException:Worklight控制台初始化失败。记录的异常:java.lang.ClassNotFoundException:在Worklight平台或项目/Worklight中找不到类oracle.jdbc.OracleDriver“