通过异常了解Weblogic下tld文件的验证
来源:互联网 发布:数据中心的网络交换机 编辑:程序博客网 时间:2024/05/18 03:12
原文地址:通过异常了解Weblogic下tld文件的验证
近期公司的全部项目都要支持WebLogic,所以各个项目组在新版本开发的同时,并行进行着上一版本程序的维护升级工作。在这个第三方Jar包升级和项目迁移的过程中遇到了各种环境相关的问题,比如今天就遇到了一个特棘手的问题,异常信息如下:
- <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加入启动参数,具体为在startWeblogic.sh/startWeblogic.bat中找到JAVA_OPTIONS变量的声明
引用
JAVA_OPTIONS="${SAVE_JAVA_OPTIONS}"
修改为引用
JAVA_OPTIONS="${SAVE_JAVA_OPTIONS} -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文件的目录读取,用来验证。
0 0
- 通过异常了解Weblogic下tld文件的验证
- weblogic下.tld错误分析
- 程序异常时通过dump文件记录下异常的详细信息
- weblogic下使用hibernate3的异常问题及解决
- Eclipse下新建一个tld文件
- Eclipse下新建一个tld文件
- Eclipse下新建一个tld文件
- struts-bean.tld,struts-html.tld,struts-logic.tld 文件的作用
- Maven项目中如何将自定义标签的tld文件添加到META-INF目录下
- 深入了解HelloAndroid下的三个文件
- 通过一个文件拷贝的例子了解二进制文件的读写
- JSTL的tld文件的一些配置
- weblogic下无法显示验证码
- weblogic下无法显示验证码
- Weblogic下Servlet异常java.lang.IllegalStateException
- weblogic下 java.lang.NoSuchMethodError异常
- 通过 Oracle 日志文件了解 CRS 的启动过程
- Struts框架 自定义标签的tld文件
- KMP字符串查找
- UICollectionView的简单使用
- unix,solaris解压tar.gz
- C++ operator两种用法
- ORACLE 10.2.0.5 RAC FOR RedHat Linux AS5 (X86) 实施手册
- 通过异常了解Weblogic下tld文件的验证
- 最大公约数和最小公倍数 递归算法
- 那些逝去的岁月-档案
- 如何消除matlAB启动时的Warning:Name is nonexistent or not a directory ...
- 程序员的泪
- 解决浏览器缓存问题
- android 4.2.2源码下载地址分析(安卓4.2.2源码)
- iOS-屏幕横屏,键盘也横屏,怎么设置呢?
- VC++6.0报错解决记录(不断更新)