Chinaunix首页 | 论坛 | 博客
  • 博客访问: 518540
  • 博文数量: 135
  • 博客积分: 3568
  • 博客等级: 中校
  • 技术积分: 1942
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-19 17:52
文章分类

全部博文(135)

文章存档

2012年(29)

2011年(41)

2010年(26)

2009年(12)

2008年(9)

2007年(12)

2006年(6)

分类: Java

2011-06-12 00:27:58

郁闷死了,没接触过WebLogic,在Tomcat中没问题,在Weblogic中就出现各种问题~~~

1. 现象一:明明 myWebAppWEB-INF/lib 下有自己使用的 common-net.2.0.jar, 然后使用它来进行FTPS上传。但是部署到WebLogic上之后,就报 javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection? 自己写了一个简单的Servlet,加入以下代码:
   OutputStream fo = new FileOutputStream("/t.txt");
   fo.write((" Ftpclient path = " + FTPClient.class.getResource("FTPClient.class")).getBytes());
   fo.flush();
结果打印的是
 Ftpclient path = jar:file:/data/bea11g/modules/com.bea.core.apache.commons.net_1.0.0.0_1-4-1.jar!/org/apache/commons/net/ftp/FTPClient.class
标红的路径是 WebLogic的安装路径。

原来是ClassLoader加载顺序的问题。郁闷。浪费了N多精力:
google吧~~:

修改方法:在 /WEB-INF/weblogic.xml 中追加以下设定:
  1. <weblogic-web-app
  2.     xmlns:xsi=""
  3.     xmlns="http://www.bea.com/ns/weblogic/90"
  4.     xsi:schemaLocation="http://www.bea.com/ns/weblogic/90 http://www.bea.com/ns/weblogic/90/weblogic-web-app.xsd">
  5.    ...
  6.   <container-descriptor>
  7.     <prefer-web-inf-classes>true</prefer-web-inf-classes>
  8.   </container-descriptor>
  9.   ...
  10. </weblogic-web-app>



2.1 IllegalArgumentException


官网的回答是在 IBM JDK的原因,需要在 /wlserver_##.#/common/bin/commEnv.sh 中追加如下一行:
  1. JAVA_OPTIONS="$JAVA_OPTIONS -Djavax.xml.validation.SchemaFactory:=org.apache.xerces.jaxp.validation.XMLSchemaFactory"
但是,我这里在安装在CentOS 5上,且使用的是最新的Weblogic 11g,只有其自带Sun的1.60_24的JDK和Oracle的jrockit_160_24_D1.1.2-4的JDK,按照上面的配置也不起作用。
2.2 ClassNotFoundException:org.apache.xerces.jaxp.datatype.DataTypeFactoryImpl


解决方法:
  也许还是第一个问题的的原因吧,造成WebLogic自带的一些jar包的使用顺序被排到后面去了。而我这里使用的工程中xercesjar包是 WEB-INF/lib/xercesImpl-2.6.2.jar,其中确实没有 DataTypeFactoryImpl。于是,把xercesImpl-2.6.2.jar 替换成 xerces 中 2.9.1的 xercesImpl.jar之后,问题解决。
阅读(2077) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~