weblogic jndi的使用,主要参考了博主 孤傲苍狼 的 WebLogic使用总结(三)——WebLogic配置JNDI数据源。写得非常详细,谢谢分享。在按葫芦画瓢的过程中出现了一些问题,在此记录下。
weblogic版本为WebLogic Server 版本: 10.3.6.0,IDE为myeclipse 8.5。
使用的过程中遇到两个问题。
1、使用tomcat部署的web应用,能否访问weblogic部署的jndi服务?
2、使用weblogic部署的web应用在使用jndi连接数据库过程中遇到的问题。
第一个问题因为之前没有一个明确的不能的认识,所以,在测试的过程中,试了遇到各种各样的问题。
1)java.lang.ClassCastException: weblogic.jdbc.common.internal.ConnectionEnv cannot be cast to java.io.Serializable
java.lang.ClassCastException: weblogic.jdbc.common.internal.ConnectionEnv cannot be cast to java.io.Serializable
at weblogic.iiop.IIOPOutputStream.writeObject(IIOPOutputStream.java:2266)
at weblogic.utils.io.ObjectStreamClass.writeFields(ObjectStreamClass.java:414)
at weblogic.corba.utils.ValueHandlerImpl.writeValueData(ValueHandlerImpl.java:235)
at weblogic.corba.utils.ValueHandlerImpl.writeValueData(ValueHandlerImpl.java:225)
at weblogic.corba.utils.ValueHandlerImpl.writeValue(ValueHandlerImpl.java:182)
at weblogic.iiop.IIOPOutputStream.write_value(IIOPOutputStream.java:1963)
at weblogic.iiop.IIOPOutputStream.write_value(IIOPOutputStream.java:2001)
at weblogic.iiop.IIOPOutputStream.writeObject(IIOPOutputStream.java:2266)
at weblogic.jdbc.common.internal.RmiDataSource_WLSkel.invoke(Unknown Source)
at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:667)
at weblogic.rmi.cluster.ClusterableServerRef.invoke(ClusterableServerRef.java:230)
at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:522)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:146)
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:518)
at weblogic.rmi.internal.wls.WLSExecuteRequest.run(WLSExecuteRequest.java:118)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
这种情况网上所说各有说法,尝试了之后会报其他问题。
按照classPath引入weblogic.jar所在位置的路径,亦无法解决问题。
来回折腾,各种说法中,这种说法"基于安全,tomcat部署的服务无法从weblogic部署的jndi中获取到序列化的对象"有一定的道理。
所以,转向了使用weblogic部署的web应用来测试weblogic部署的jndi数据源。
以下要说明的是第二种情况:weblogic部署的web应用在使用jndi连接数据库过程中遇到的问题。
因之前尝试中无法确定需要对哪些jar进行引用。所以也会出现各种各样的问题。
最主要的问题是:
Error creating bean with name ‘weblogic.wsee.jaxws.client.async.AsyncTransportProvider‘
开始尝试着将weblogic的server下lib的所有jar拿到web的lib部署,或者增减一些jar进行测试,依然会出现各种问题。
从https://community.oracle.com/thread/2451478?tstart=0中了解到,这可能是weblogic的一个缺陷,或者说一个"特性",因为你乱放jar,给你报个错也很正常。
-
2. Re: weblogic.wsee.jaxws.client.async.AsyncTransportProvider
967067 2012-10-9 下午2:34 (回复 967067)
what is means?
it is weblogic bug?
where have the Solve method ? -
3. Re: weblogic.wsee.jaxws.client.async.AsyncTransportProvider
Kalyan Pasupuleti-Oracle 2012-10-10 下午4:32 (回复 967067)
Yes plz check this BUG from MOS.
-
4. Re: weblogic.wsee.jaxws.client.async.AsyncTransportProvider
Raghu Honawad-Oracle 2012-11-27 上午7:10 (回复 967067)
Hi,
See if you have any of the following jars weblogic.jar and wlfullclint.jar in your Build Path i.e. deployment profile. Remove them, it should fix the issue.
Regards,
Raghu Honawad
所以,我将classpath所引用的所有weblogic的jar清除,web-inf的lib下只保留wlclient.jar。
这样,weblogic部署的web应用启动正常,访问jndi也成功了。
使用tomcat部署的web应用,能否访问weblogic部署的jndi服务?
这个问题,如果哪位大侠知道的,恳请指教下。