Tomcat 6在Tomcat中包含glassfish 3服务器jar文件后显示错误



在我的本地系统上,我使用的是glassfish服务器3.0。我已经在我的实际服务器上包含了glassfish3的所有服务器jar文件,该服务器具有Tomcat6。现在显示以下异常:

HTTP Status 500 - 
--------------------------------------------------------------------------------
type Exception report
message 
description The server encountered an internal error () that prevented it from fulfilling this request.
exception 
org.apache.jasper.JasperException: /pages/login.jsp(178,36) The s:form tag declares that it accepts  dynamic attributes but does not implement the required interface
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:148)
org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:775)
org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1507)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2338)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2388)
org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2394)
org.apache.jasper.compiler.Node$Root.accept(Node.java:489)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2338)
org.apache.jasper.compiler.Validator.validate(Validator.java:1737)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:178)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:306)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:273)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:566)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:88)

如何解决这个问题。在部署战争文件时,我的战争文件中包含了以下jar文件(来自glashfish服务器)

bean-validator.jar
commons-fileupload-1.2.1.jar
commons-io-1.3.2.jar
commons-logging-1.0.4.jar
freemarker-2.3.15.jar
javax.annotation.jar
jaxr-api-osgi.jar
jaxpc-api-osgi.jar
jsf-api.jar
jsf-impl.jar
jstl-impl.jar
mysql-connector-java-5.1.14-bin.jar
ongl-2.7.3.jar
struts2-core-2.1.8.1.jar
struts2-jquery-plugin-1.8.3.jar
webservices-api-osgi.jar
weld-osgi-bundle.jar
xwork-core-2.1.6.jar
javax.ejb.jar
javax.enterprise.deploy.jar
javax.jms.jar
javax.mail.jar
javax.management.j2ee.jar
javax.persistence.jar
javac.resource.jar
javax.security.auth.message.jar
javax.security.jacc.jar
javax.servlet.jar
javax.servlet.jsp.jar
javax.servlet.jsp.jstl.jar
javax.transaction.jar

理想情况下,我们的企业应用程序应该独立于我们使用的任何服务器。因此,所有服务器都有一个lib文件夹,您可以在其中放置该环境中所需的任何特定JAR。

我建议您从项目中删除glassfish JARS,并将它们放在本地glasshfish服务器的lib中(如果它们还没有)。或者,您可以将JAR放在一个不同的文件夹中,并将该文件夹添加到类路径中。

根据您发布的stacktrace,JAR中存在冲突。。。由于您的实际服务器上有tomcat和glassfish,这两个JAR,所以当它加载应用程序时,它正在从错误的JAR中为它所选择的taglib加载Tag类。因此,建议只有一个JAR。

最新更新