应用部署在TongWeb上报错如下,原因是应用引用了tomcat的类org.apache.jasper.runtime.JspFactoryImpl, 若移植到TongWeb上,需改类包名。
TongWeb7.0是 com.tongweb.jasper.runtime.JspFactoryImpl
TongWeb6.1是 com.tongweb.web.jasper.runtime.JspFactoryImpl
版本保持兼容性,让包名、类名相同它不香吗?
比如:开源org.eclipse.equinox.servletbridge.BridgeServlet类,这时需要将该类代码改为TongWeb如上类来使用。
public void init()
throws ServletException
{
super.init();
this.homePage = getServletConfig().getInitParameter("homePage");
if (System.getProperty("catalina.base") != null) {
try {
this.jspServlet =
((Servlet)Thread.currentThread().getContextClassLoader()
.loadClass("org.apache.jasper.servlet.JspServlet").newInstance());
} catch (Exception e) {
throw new ServletException(e);
}
this.jspServlet.init(getServletConfig());
}
日志如下:
Caused by: java.lang.ClassNotFoundException:org.apache.jasper.runtime.JspFactoryImpl
at com.tongweb.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1276)
at com.tongweb.tomee.catalina.ThanosTomEEWebappClassLoader.access$001(ThanosTomEEWebappClassLoader.java:16)
at com.tongweb.tomee.catalina.ThanosTomEEWebappClassLoader$1.loadClass(ThanosTomEEWebappClassLoader.java:71)
at com.tongweb.common.LoadClassCache.cacheLoadClass(LoadClassCache.java:78)
at com.tongweb.tomee.catalina.ThanosTomEEWebappClassLoader.loadClass(ThanosTomEEWebappClassLoader.java:68)
at com.tongweb.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1128)
at org.apache.struts2.jasper.runtime.JspFactoryImpl.getPageContext(JspFactoryImpl.java:125)