Eclipse + Glassfish v3中没有web.xml?

时间:2011-02-24 02:34:57

标签: eclipse deployment glassfish deployment-descriptor

我在Eclipse(helios)+ Glassfish v3中创建了一个简单的“hello world”servlet。我正在使用Glassfish的eclipse插件似乎没有web.xml,而是WEB-INF /文件夹中的sun-web.xml。这是我第一次使用glassfish但是对于没有web.xml感到有些惊讶 - 所以这里有一些问题:

  1. 我在哪里检查servlet的url-mappings?在Eclipse中创建一个新的Servlet时,它会要求我进行URL映射,但我无法在任何.xml文件中的任何位置找到它。我可以调整设置。
  2. 如果没有任何web.xml,从头开始创建它将非常容易出错。你有什么建议?谷歌的样品和游戏?不应该自动创建吗?
  3. 有没有人遇到过这个?我试着查找web.xml和sun-web.xml之间的区别,但结果并不是很有启发性。我不想为配置目的学习另一个xml,也不想学习glassfish。
  4. 我们必须配置servlet上下文,映射等,尤其是在开发/测试期间,但是我完全没有使用web.xml。

5 个答案:

答案 0 :(得分:12)

Eclipse允许您在为Java EE 6创建Dynamic Web Project时不创建web.xml文件,因为Java EE 6规范(通常)和Servlet 3.0规范(特别是)尝试不再强调部署描述符

您可以使用注释来提供web.xml文件中包含的所有数据。 Javadoc for the Servlet 3.0 annotations非常愚蠢。您应该通读Servlet 3.0 spec from the jcp.org site以获得更多解释性文字。

要更改Servlet 3.0 servlet的url-mapping,首先要查看的是servlet的源代码。查找(并更改)urlPatterns元素的值。

如果您尝试创建基于Servlet 3.0的Web应用程序,请尝试避免创建web.xml文件。

sun-web.xml / glassfish-web.xml文件用于“完成”war文件的描述,以便部署到GlassFish容器中。

关于WebServlet等注释的另一个注意事项......它们没有将带注释的类集成到类层次结构中,因此正确使用@WebServlet看起来像

@WebServlet(
    name = "MyServlet", 
    urlPatterns = {"/path_to_servlet"}
)
public class MyServlet extends HttpServlet {}

答案 1 :(得分:10)

如果您发现确实需要web.xml文件,则可以在Project Explorer视图中按上下文单击部署描述符,并且应该有一个选项“Generate Deployment Descriptor Stub”。这将为web.xmldisplay-name元素创建welcome-file-list

答案 2 :(得分:4)

当您创建'新>时,点击“完成”似乎是一个坏习惯。动态Web项目' - 您应该继续单击“下一步”并转到最后一个窗口窗格,您可以在其中选择“生成web.xml部署描述符” - 默认情况下它似乎未选中。

那就是说我在制作网络应用时有点生气。在这里,我认为这是一个特定于玻璃鱼的问题。

答案 3 :(得分:3)

由于Glassfish 3.x是经过完全认证的Java EE 6服务器,因此它支持Servlets 3.0。从Servlets 3.0开始,可以通过注释指定web.xml设置。

例如

@WebServlet(
    name = "MyServlet", 
    urlPatterns = {"/path_to_servlet"}
)
public class MyServlet {}

答案 4 :(得分:0)

要添加到TMN所说的内容,我注意到项目资源管理器在出于某种原因执行SVN更新之前不会显示部署描述符。如果您遇到此问题,请尝试更新您的代码。我已经进行了HEAD修订,但出于某种原因,更新显示了该视图。