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

来源:互联网 发布:mini metro mac 编辑:程序博客网 时间:2024/06/05 22:52

最近有个任务是将原本运行在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的变量设置,如果有,删之。

 

重启服务后,问题解决

原创粉丝点击