在eclipse上JBoss 5.1中部署servlet时出现问题

在eclipse上JBoss 5.1中部署servlet时出现问题,eclipse,servlets,jboss,Eclipse,Servlets,Jboss,昨天,我创建了一个简单的图像servlet并尝试部署它。我在JBoss启动时遇到了一个错误,然后在尝试调用servlet时又遇到了更多错误 昨天我花了大约8个小时在网上搜索答案并尝试不同的场景。我最终使我的JBoss问题变得更糟,然后修复了它们,但我从未让servlet工作 servlet是com.controller.MyImageServlet,如下所示: package com.controller; import javax.servlet.http.*; /** * Servle

昨天,我创建了一个简单的图像servlet并尝试部署它。我在JBoss启动时遇到了一个错误,然后在尝试调用servlet时又遇到了更多错误

昨天我花了大约8个小时在网上搜索答案并尝试不同的场景。我最终使我的JBoss问题变得更糟,然后修复了它们,但我从未让servlet工作

servlet是com.controller.MyImageServlet,如下所示:

package com.controller;

import javax.servlet.http.*;

/**
 * Servlet implementation class MyImageServlet
 */
public class MyImageServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public MyImageServlet() {
        super();
    }

    // Process the HTTP Get request
      public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
             /* ... */
    }
}
  <servlet>
    <servlet-name>ImageServlet</servlet-name>
    <servlet-class>com.controller.MyImageServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ImageServlet</servlet-name>
    <url-pattern>/CERTIMAGE/*</url-pattern>
  </servlet-mapping>
我添加到web.xml的标记如下所示:

package com.controller;

import javax.servlet.http.*;

/**
 * Servlet implementation class MyImageServlet
 */
public class MyImageServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public MyImageServlet() {
        super();
    }

    // Process the HTTP Get request
      public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
             /* ... */
    }
}
  <servlet>
    <servlet-name>ImageServlet</servlet-name>
    <servlet-class>com.controller.MyImageServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ImageServlet</servlet-name>
    <url-pattern>/CERTIMAGE/*</url-pattern>
  </servlet-mapping>
当我尝试URL模式()时,我在日志(和浏览器)中获得以下堆栈跟踪:

如果我再次尝试URL模式,我会在日志中看到以下消息:

09:33:32,390 INFO  [[ImageServlet]] Servlet ImageServlet is currently unavailable
我已经在WEB-INF/classes/com/controller上验证了MyImageServlet.class是否处于战争状态。事实上,我甚至在我的一个JSP中添加了一些代码,试图实例化Servlet并调用doGet方法。这实际上起作用,并将正确的调试序列输出到日志,指示调用了Servlet构造函数和doGet方法

我还尝试按照一些说明创建/部署一个非常简单的HelloWorldServlet,这也有同样的问题。请注意,web.xml已经包含了一个由JBoss:org.JBoss.web.tomcat.service.StatusServlet放在那里的servlet——该servlet不会在日志中给出任何错误。作为一个实验,我从该路径中删除了“.web”,最终得到的错误与我在Servlet上得到的错误完全相同。因此,在给定指定路径的情况下,JBoss似乎无法找到我的Servlet。为了好玩,我尝试了其他各种途径,比如普通的MyImageServlet、controller.MyImageServlet等等。另外,servlet最初名为ImageServlet,但我尝试更改名称,认为可能与现有ImageServlet存在冲突。在所有情况下,行为都是一样的

在昨天的所有研究之后,我想说这似乎是JBossServlet容器的问题,我还了解到JBoss 5.1.0.GA应该与tomcat servlet容器捆绑在一起。不到两个月前,我在我的电脑(WindowsXP)上安装了JBoss(来自JBoss.org),并按原样使用它。请注意,我运行的是JDK1.6,所以我使用了jboss-jdk6安装版本。我在Windows上运行,但也部署到Linux虚拟专用服务器。我将当前版本的程序(包括servlet)部署到Linux机器上,但我得到了完全相同的错误。我不愿意尝试重新安装JBoss,因为当我在两个完全不同的安装上遇到相同的错误时,很难将责任归咎于JBoss安装

我对捆绑的tomcat servlet容器有点怀疑,因为使用eclipse,我无法找到任何迹象表明有tomcat捆绑到JBoss中。我确实在JBoss common/lib目录中找到了servlet-api.jar。这在eclipse构建路径上

一个可能有用的注意事项:我以前在使用相同eclipse的其他项目中使用过独立的tomcat服务器,所以可能是某种eclipse问题?但是,正如我所说的,当我部署到Linux服务器时,我确实会遇到同样的错误,部署过程只是将文件ftping到服务器,然后将它们放入部署的war包中,然后重新启动JBoss


感谢您提供的任何帮助。

在过去几周处理类似问题后,我现在回顾过去,并向过去的自己建议尝试以下方法之一:

  • 确保在eclipse部署中指定了源文件夹 部件(在项目上单击鼠标右键,选择“特性”,然后单击 部署程序集)

  • 确保源文件夹包含在服务器类路径中 (双击服务器,单击“打开启动配置”,然后 选择类路径选项卡)


  • 然而,这个项目已经过去很久了,所以我无法确定。在过去几周处理类似问题后,我现在回顾过去,并向过去的自己建议,我尝试以下方法之一:

  • 确保在eclipse部署中指定了源文件夹 部件(在项目上单击鼠标右键,选择“特性”,然后单击 部署程序集)

  • 确保源文件夹包含在服务器类路径中 (双击服务器,单击“打开启动配置”,然后 选择类路径选项卡)

  • 然而,这个项目已经过去很久了,所以我无法确定。

    “我已经在WEB-INF/classes/com/controller/images上验证了MyImageServlet.class是否处于战争状态。”您能回顾一下这个声明吗?
    /images
    与实际的包声明冲突…抱歉,“images”是一个打字错误。我将在问题声明中解决这个问题。“我已经在WEB-INF/classes/com/controller/images上验证了MyImageServlet.class处于战争状态。”您能回顾一下这个声明吗?
    /images
    与实际的包声明冲突…抱歉,“images”是一个打字错误。我会在问题陈述中解决这个问题。