浏览 3411 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-08-17
<2012-8-17 上午11时56分40秒 CST> <Warning> <HTTP> <BEA-101196> <[plat-resmgr1.8.7.war]: Error while parsing the Tag Library Descriptor at "/opt/weblogic/user_projects/domains/plat1.8.7/servers/AdminServer/tmp/_WL_user/_appsdir_plat-resmgr1.8.7_war/malq6e/war/WEB-INF/tlds/jstl-c.tld". com.ctc.wstx.exc.WstxIOException: java.sun.com at com.ctc.wstx.sr.StreamScanner.throwFromIOE(StreamScanner.java:699) at com.ctc.wstx.sr.ValidatingStreamReader.findDtdExtSubset(ValidatingStreamReader.java:480) at com.ctc.wstx.sr.ValidatingStreamReader.finishDTD(ValidatingStreamReader.java:341) at com.ctc.wstx.sr.BasicStreamReader.skipToken(BasicStreamReader.java:3356) at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:1973) Truncated. see log file for complete stacktrace java.net.UnknownHostException: java.sun.com at java.net.InetAddress.getAllByName0(InetAddress.java:1157) at java.net.InetAddress.getAllByName(InetAddress.java:1083) at java.net.InetAddress.getAllByName(InetAddress.java:1019) at weblogic.net.http.HttpClient.openServer(HttpClient.java:297) at weblogic.net.http.HttpClient.openServer(HttpClient.java:404) Truncated. see log file for complete stacktrace 多个Jar包中的TLD文件一按正都出现了问题,比如Struts.jar下的struts-bean.tld、struts-tld.tld等等。异常的大致原因为:因为程序所在的服务器是不能访问公网的,所以程序启动时必要文件的验证需要访问java.sun.com上的dtd文件,如 引用 http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd 。
但是,访问因特网只是理想的环境,而且Tomcat下如果不访问因特网就不会报此异常。大家着实为这个问题忙活了不少,查了很多资料,试了各种方法。最后一同事从网上挖出一先人的总结,方案如下: 给WebLogic引用的JVM加入启动参数 引用 -Djavax.xml.stream.XMLInputFactory=weblogic.xml.stax.XMLStreamInputFactory 。就这样,重启,OK了。很简单,也很有效。
关于这个JVM参数的详细资料目前没有找到。只有一篇相关度不是很高的帖子如下:https://svn.codehaus.org/woodstox/wstx/trunk/release-notes/USAGE。暂且先记录于此,方便日后进一步关注这个问题,也方便遇到同样问题的朋友能做个参考。 目前个人理解为XML文件验证时,WebLogic环境下默认的XMLInputFactory是需要立刻读取远程DTD文件的,而weblogic.xml.stax.XMLStreamInputFactory可以从它自身存放DTD文件的目录读取,用来验证。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |