您的位置:首页 > 其它

【个人整理】WAS7.0迁移时遇到的问题:TransformerFactoryImpl not found及解决

2011-11-24 15:34 218 查看
最近有个任务是将原本运行在WAS6.0下的一个项目迁移到WAS7.0下。

结果出现了很多莫名其妙的问题,其中一个在于,点击页面时,会报这样一个错误:

javax.xml.transform.TransformerFactoryConfigurationError: Provider org.apache.xalan.xsltc.trax.TransformerFactoryImpl not found at javax.xml.transform.TransformerFactory.newInstance(Unknown
Source) at com.ibm.ws.jsp.translator.visitor.validator.PageDataImpl._getInputStream(PageDataImpl.java:137) at com.ibm.ws.jsp.translator.visitor.validator.PageDataImpl.getInputStream(PageDataImpl.java:120) at org.apache.taglibs.standard.tlv.JstlBaseTLV.validate(JstlBaseTLV.java:156) at
org.apache.taglibs.standard.tlv.JstlCoreTLV.validate(JstlCoreTLV.java:96) at com.ibm.ws.jsp.translator.visitor.validator.ValidateVisitor.validateTagLib(ValidateVisitor.java:1103) at com.ibm.ws.jsp.translator.visitor.validator.ValidateVisitor.visitJspRootStart(ValidateVisitor.java:486) at
com.ibm.ws.jsp.translator.visitor.JspVisitor.processJspElement(JspVisitor.java:233) at com.ibm.ws.jsp.translator.visitor.JspVisitor.visit(JspVisitor.java:216) at com.ibm.ws.jsp.translator.JspTranslator.processVisitors(JspTranslator.java:127) at com.ibm.ws.jsp.translator.utils.JspTranslatorUtil.translateJsp(JspTranslatorUtil.java:253) at
com.ibm.ws.jsp.translator.utils.JspTranslatorUtil.translateJspAndCompile(JspTranslatorUtil.java:120) at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.translateJsp(AbstractJSPExtensionServletWrapper.java:512) at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper._checkForTranslation(AbstractJSPExtensionServletWrapper.java:439) at
com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.checkForTranslation(AbstractJSPExtensionServletWrapper.java:297) at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.handleRequest(AbstractJSPExtensionServletWrapper.java:147) at
com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionProcessor.handleRequest(AbstractJSPExtensionProcessor.java:340) at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:341) at org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:139) at

查了很多资料,无果,后来在一片ibm的文章中找到了答案:

https://www-304.ibm.com/support/docview.wss?uid=swg21444183

翻译一下,大体的意思是:

在WAS7.0的环境下使用TransformerFactory.newInstance()方法时,不必自己指定javax.xml.transform.TransformerFactory的值,即如下代码

System.setProperties("javax.xml.transform.TransformerFactory", "org.apache.xalan.xsltc.trax.TransformerFactoryImpl");

或者类似的,是不能在代码中出现的。也不能在WAS的JVM变量中出现。如果存在这样的设定,WAS在启动,或者运行的当中,就会出现TransformerFactoryImpl not found 的错误。

解决方法:

1.在项目中全文搜索javax.xml.transform.TransformerFactory,如果存在

System.setProperties("javax.xml.transform.TransformerFactory", "org.apache.xalan.xsltc.trax.TransformerFactoryImpl");

等设置系统变量的代码,注释之。

2.打开Websphere运行管理控制台,在“WebSphere Application Server--》[服务器]--》Java 和进程管理--》进程定义--》java虚拟机--》最右边定制属性 ”

中,查看是否存在javax.xml.transform.TransformerFactory的变量设置,如果有,删之。

重启服务后,问题解决
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐