将WAR转换为EAR和其他Glassfish故事

时间:2010-04-28 11:22:43

标签: java web-services glassfish

我真的很新,所以我希望不要犯任何可怕的错误。如果我有,我会事先道歉。

在我的项目中,我使用的是tomcat并部署了WAR文件。但现在有些老板想要部署EAR文件。我们走了。

我首先下载了Glassfish(不知道它是否适合像我这样的新手使用的应用程序服务器),并将其全部(我甚至在autodeploy> _<中部署了hello.war)。然后准备了一个EAR文件。

据我所知,我只需要在Eclipse中创建一个企业应用程序项目,并将我的war文件添加到模块中。这会自动更改application.xml文件(感谢eclipse项目!)。所以我将它导出到EAR文件并将其上传到glassfish服务器。

奇观奇观,它不起作用。

我还尝试在这个新的闪亮玻璃鱼中部署旧的WAR文件,但它继续发现http-404错误。 glassfish似乎说我的项目不在〜/ domains / domain1 / docroot中。顺便说一句,我正在使用Windows,并且我知道glassfish和windows之间存在一些问题,因为有些更新了打开的文件等。

所以我有问题: 首先,我是否正确地进行了EAR包? 其次,我是否需要对glassfish服务器进行一些特殊配置来部署EAR和WAR文件?

谢谢!

3 个答案:

答案 0 :(得分:5)

如果您的应用没有EJB,我认为将其部署为EAR没有任何价值。

域名和网址应该以某种方式涉及您的域名。我是WebLogic / JBOSS用户。有没有办法在Glassfish中创建域?如果是,请执行此操作并将您的EAR放入其中。也许this会有所帮助。

答案 1 :(得分:2)

  

在我的项目中,我使用的是tomcat并部署了WAR文件。但现在有些老板想要部署EAR文件。我们走了。

获得这一决定背后的动机会很有趣。总体趋势是使事情变得更简单,而不是更复杂(例如,在Java EE 6中,可以直接将EJB直接放入WAR中)。

  

我首先下载了Glassfish(不知道它是否适合像我这样的新手使用的应用程序服务器),并将其全部(我甚至在autodeploy> _<中部署了hello.war)。然后准备了一个EAR文件。

我非常喜欢GlassFish v3,它为开发提供了非常高效的环境。而且我觉得简单的需求并不复杂,如果您不习惯,管理控制台会让它变得友好。

  

(...)所以我将它导出到EAR文件并将其上传到glassfish服务器。神奇的奇迹,它不起作用。

检查服务器日志。

  

我还尝试在这个新的闪亮玻璃鱼中部署旧的WAR文件,但它继续发现http-404错误。

您尝试访问哪个网址?如何在管理控制台中看到该应用程序。

  

所以我有疑问:首先,我是否正确地进行了EAR包?

不知道,我不依赖IDE。显示您的耳朵结构(使用tree),显示您的application.xml

  

我是否需要对glassfish服务器进行一些特殊配置才能部署EAR和WAR文件?

有几种方法可以部署WAR,EAR(通过控制台,通过autodeploy目录,通过asadmin命令行工具),它们都可以开箱即用。

答案 2 :(得分:1)

首先,感谢您的回复。我会尝试收集所有这些信息。 我认为将其更改为EAR文件的动机与“公司决策”有关,也可能是每当他在服务器中安装某些应用程序时都不想编写上下文的人,尽管我在公司中没有人挑战这个。我的错。 他们还在使用Java EE 1.5。 我将Glasshfish 2.1和Glassfish 2.1连接器安装到我的eclipse Galileo上。我认为它在eclipse conector,控制台和Web管理之间管理相当容易。我最终找到了一个可以做任何动作的地方。与Tomcat相比,这是非常大的,我觉得不知何故,但我试着慢慢来。

在我的EAR文件中,WAR文件并不多,在META-INF目录中有我的application.xml和manifest.mf。我的application.xml读取:

<?xml version="1.0" encoding="UTF-8"?>
<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:application="http://java.sun.com/xml/ns/javaee/application_5.xsd" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd" 
    id="Application_ID" version="5">
  <display-name>foo</display-name>
  <module>
    <web>
      <web-uri>FOO.war</web-uri>
      <context-root>foo</context-root>
    </web>
  </module>
</application>

我通过http://localhost:8080/foo访问url.server.log显示(用西班牙语,我会将其翻译为我能管理的最好的),顺便说一句,我使用web服务管理glassfish而不是win控制台。

[#| 2010-04-29T09:46:59.722 + 0200 | INFO | sun-appserver2.1 | javax.enterprise.system.tools.deployment | _ThreadID = 26; _TreadName = Thread-419; |使用moduleid进行部署= foo |#]

[#| 2010-04-29T09:46:59.909 + 0200 |严重|太阳appserver2.1 | org.apache.catalina.core.StandardContext | _ThreadID = 27; _ThreadName =线程418; _RequestID = 9bff8714- d870-4f30-8a7a-22dca0375b6b; | PWC1300:在context / foo中初始化资源时出错|#]

[#| 2010-04-29T09:46:59.909 + 0200 |严重|太阳appserver2.1 | org.apache.catalina.core.StandardContext | _ThreadID = 27; _ThreadName =线程418; _RequestID = 9bff8714- d870-4f30-8a7a-22dca0375b6b; | PWC4430:文档库C:\ Sun \ SDK \ jdk \ glassfish \ domains \ domain1 \ docroot \ FOO不存在或者是无法读取的目录|#] < / p>

[#| 2010-04-29T09:46:59.925 + 0200 |严重|太阳appserver2.1 | org.apache.catalina.core.StandardContext | _ThreadID = 27; _ThreadName =线程418; _RequestID = 9bff8714- d870-4f30-8a7a-22dca0375b6b; | PWC1306:context / foo的启动失败,因为以前的错误|#]

[#| 2010-04-29T09:46:59.925 + 0200 | INFO | sun-appserver2.1 | org.apache.catalina.core.StandardContext | _ThreadID = 27; _TreadName = Thread-418; | PWC1240:The WebModule [/ foo]容器尚未启动|#]

正如我所说,我也尝试直接使用WAR,但它也没有用。我部署得很好(或者它说)然后它有一个漂亮的按钮(在动作列中)来启动Web服务,服务器给我http://localhost:4848/applications/webApplicationLinks.jsf?appID=FOO&contextRoot=/FOO(当战争是FOO时,耳朵是foo),并将我重定向到一个页面,告诉我如果服务器或监听器没有运行,链接可能无法正常工作。以下链接为http://localhost:8080/FOOhttp://localhost:8181/FOO(两者均无效,8080为AKA http-404,8181为空白页)。顺便说一句,这个开始按钮在耳边是不可用的,我不喜欢这样。

至于server.log上的其他有趣的东西,它似乎没有多说,但我可能是错的,因为我在服务器世界真的很新。