【发布时间】:2011-11-05 19:02:41
【问题描述】:
在 Ubuntu 中,我运行的是 Tomcat 6,浏览器底部的 Tomcat 版本显示:
Apache Tomcat/6.0.28
我通过apt-get 安装了Tomcat。我制作了一些“hello world”servlet,并确认 Tomcat 6 似乎工作正常。
因为我的最终目标是做一个网络服务,所以我去找了axis2。我找不到axis2的任何Ubuntu软件包,所以接下来我从here下载了axis2 v 1.6.1并将其解压缩到我的主目录中。首先,我指出了一个符号链接 /var/lib/tomcat6/webapps/axis2 -> /home/doug/.../axis2-1.6.1/webapp/ 基于these instructions。
浏览到http://localhost:8080/axis2/ 我希望看到基本的axis2(管理员?)页面。相反,我收到大量错误,抱怨无法编译axis2的jsp:
类型异常报告 信息 描述 服务器遇到一个内部错误 () 阻止它完成这个请求。 例外 org.apache.jasper.JasperException:无法为 JSP 编译类: 生成的 java 文件中的第 6 行出现错误 只能导入一个类型。 org.apache.axis2.Constants 解析为一个包 生成的 java 文件中的第 7 行出现错误 只能导入一个类型。 org.apache.axis2.context.ConfigurationContext 解析为一个包 生成的 java 文件中的第 8 行出现错误 只能导入一个类型。 org.apache.axis2.description.Parameter 解析为一个包 生成的 java 文件中的第 9 行发生错误 只能导入一个类型。 org.apache.axis2.transport.http.AxisServlet 解析为一个包 生成的 java 文件中的第 10 行发生错误 只能导入一个类型。 org.apache.axis2.transport.TransportListener 解析为一个包 在 jsp 文件中的第 31 行发生错误:/axis2-web/include/httpbase.jsp ConfigurationContext 无法解析为类型 28: 29: 公共无效 jspInit() { 30: ServletContext 上下文 = this.getServletConfig().getServletContext(); 31:ConfigurationContext configctx = (ConfigurationContext) context.getAttribute(AxisServlet.CONFIGURATION_CONTEXT); 32: if (configctx != null) { 33:参数参数 = configctx.getAxisConfiguration().getParameter(Constants.HTTP_FRONTEND_HOST_URL); 34:如果(参数!= null){ 在 jsp 文件中的第 31 行发生错误:/axis2-web/include/httpbase.jsp ConfigurationContext 无法解析为类型 28: 29: 公共无效 jspInit() { 30: ServletContext 上下文 = this.getServletConfig().getServletContext(); 31:ConfigurationContext configctx = (ConfigurationContext) context.getAttribute(AxisServlet.CONFIGURATION_CONTEXT); 32: if (configctx != null) { 33:参数参数 = configctx.getAxisConfiguration().getParameter(Constants.HTTP_FRONTEND_HOST_URL); 34:如果(参数!= null){ 在 jsp 文件中的第 31 行发生错误:/axis2-web/include/httpbase.jsp AxisServlet.CONFIGURATION_CONTEXT 无法解析为类型 28: 29: 公共无效 jspInit() { 30: ServletContext 上下文 = this.getServletConfig().getServletContext(); 31:ConfigurationContext configctx = (ConfigurationContext) context.getAttribute(AxisServlet.CONFIGURATION_CONTEXT); 32: if (configctx != null) { 33:参数参数 = configctx.getAxisConfiguration().getParameter(Constants.HTTP_FRONTEND_HOST_URL); 34:如果(参数!= null){ 在 jsp 文件中的第 33 行发生错误:/axis2-web/include/httpbase.jsp 参数无法解析为类型 30: ServletContext 上下文 = this.getServletConfig().getServletContext(); 31:ConfigurationContext configctx = (ConfigurationContext) context.getAttribute(AxisServlet.CONFIGURATION_CONTEXT); 32: if (configctx != null) { 33:参数参数 = configctx.getAxisConfiguration().getParameter(Constants.HTTP_FRONTEND_HOST_URL); 34:如果(参数!= null){ 35: frontendHostUrl = (String) 参数.getValue(); 36:} 在 jsp 文件中的第 33 行发生错误:/axis2-web/include/httpbase.jsp Constants.HTTP_FRONTEND_HOST_URL 无法解析为类型 30: ServletContext 上下文 = this.getServletConfig().getServletContext(); 31:ConfigurationContext configctx = (ConfigurationContext) context.getAttribute(AxisServlet.CONFIGURATION_CONTEXT); 32: if (configctx != null) { 33:参数参数 = configctx.getAxisConfiguration().getParameter(Constants.HTTP_FRONTEND_HOST_URL); 34:如果(参数!= null){ 35: frontendHostUrl = (String) 参数.getValue(); 36:} 在 jsp 文件中的第 37 行发生错误:/axis2-web/include/httpbase.jsp 参数无法解析为类型 34:如果(参数!= null){ 35: frontendHostUrl = (String) 参数.getValue(); 36:} 37:参数hostnameParam = configctx.getAxisConfiguration().getParameter(TransportListener.HOST_ADDRESS); 38:如果(主机名参数!=空){ 39:主机名=(字符串)主机名Param.getValue(); 40:} 在 jsp 文件中的第 37 行发生错误:/axis2-web/include/httpbase.jsp TransportListener.HOST_ADDRESS 无法解析为类型 34:如果(参数!= null){ 35: frontendHostUrl = (String) 参数.getValue(); 36:} 37:参数hostnameParam = configctx.getAxisConfiguration().getParameter(TransportListener.HOST_ADDRESS); 38:如果(主机名参数!=空){ 39:主机名=(字符串)主机名Param.getValue(); 40:} 堆栈跟踪: org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92) org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330) org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:439) org.apache.jasper.compiler.Compiler.compile(Compiler.java:349) org.apache.jasper.compiler.Compiler.compile(Compiler.java:327) org.apache.jasper.compiler.Compiler.compile(Compiler.java:314) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:968) org.apache.jsp.axis2_002dweb.index_jsp._jspService(index_jsp.java:59) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717)我不应该在 Tomcat 6 中尝试最新的axis2吗?有没有我应该使用的 Ubuntu 软件包?
【问题讨论】:
-
从未见过,但我真的建议您获取自己的 Tomcat 并将其放入您自己的目录之一,然后将轴 webapp 复制到其中。通过这种方式,您可以更好地控制整个过程。
-
顺便问一下,为什么要选择相当老式的 Axis+JSP?为什么不是 JAX-WS/RS?从 Java EE 5 开始,Web 服务在 Java EE 中实现了标准化,使用 JAX-WS API 并且从 Java EE 6 开始也使用了很棒的 RESTful JAX-RS API。对于 JAX-WS,请参阅 metro.java.net/guide,对于 JAX-RS,请参阅 jersey.java.net/nonav/documentation/latest/user-guide.html