【问题标题】:Converting WAR to EAR and other Glassfish stories将 WAR 转换为 EAR 和其他 Glassfish 故事
【发布时间】:2010-04-28 11:22:42
【问题描述】:

我在这方面真的很陌生,所以我希望不要犯任何可怕的错误。如果有的话,我先道歉。

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

我首先下载了 Glassfish(不知道它是否适合像我这样的新手的应用程序服务器),安装它和所有(我什至在 autodeploy >_

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

千奇百怪,这行不通。

我还尝试在这个新的闪亮 glassfish 中部署旧的 WAR 文件,但它继续出现 http-404 not found 错误。 glassfish 似乎说我的项目不在 ~/domains/domain1/docroot 中。顺便说一句,我使用的是 windows,我知道 glassfish 和 windows 之间存在一些问题,因为一些更新打开的文件等。

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

谢谢!

【问题讨论】:

  • 显然有些不对劲......但考虑到这个问题的详细程度,我一点也不知道移动部件出了什么问题......甚至部件是什么。您使用的是哪个版本的 Eclipse、GlassFish 和适用于 Eclipse 的 GlassFish 适配器?您是如何将它(您的 EAR)“上传”到 GlassFish 服务器的?您是如何将 WAR 文件部署到 GlassFish 的?在 domain\domain1\logs\server.log 中有什么有趣的东西
  • 我在 Eclipse 中的 glassfish 连接器中发现了一件事,当您使用 WAR 时,它可以与仅文件更改更新的爆炸 WAR 一起使用。当您使用 EAR 时,它会在更新后重新部署重新打包的 WAR 文件。差异是惊人的。

标签: java web-services glassfish


【解决方案1】:

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

域名和 URL 应该以某种方式涉及您的域名。我是 WebLogic/JBOSS 用户。有什么方法可以在 Glassfish 中创建域吗?如果是,请这样做并将您的 EAR 放入其中。也许this 会有所帮助。

【讨论】:

  • 谢谢!我还认为在 WAR 上部署 EAR 没有任何价值,因为它是一个简单的项目。可悲的是,这不是我的决定。感谢您的链接!我继续处理配置错误。
【解决方案2】:

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

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

我首先下载了 Glassfish(不知道它是否适合像我这样的新手的应用程序服务器),安装它和所有(我什至在 autodeploy >_

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

(...) 所以我将它导出到一个 EAR 文件并上传到 glassfish 服务器。千奇百怪,没用。

检查服务器日志。

我也尝试在这个新的闪亮 glassfish 中部署旧的 WAR 文件,但它继续出现 http-404 not found 错误。

您尝试访问哪个 URL?您如何在管理控制台中查看应用程序。

所以我必须提出问题:首先,我是否正确地执行了 EAR 包?

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

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

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

【讨论】:

    【解决方案3】:

    首先,感谢您的回复。我将尝试收集所有这些信息。 我认为将其更改为 EAR 文件的动机与“公司决策”有关,并且可能与在服务器中安装某些应用程序时不想编写上下文的人有关,尽管我在公司中没有人对此提出质疑.我的错。 他们还在使用 Java EE 1.5。 我在我的 eclipse Galileo 上安装了 Glasshfish 2.1 和 Glassfish 2.1 连接器。我认为它在 eclipse 连接器、控制台和 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>
    

    我通过 server.log 显示的http://localhost:8080/foo 访问 URL(西班牙语,我会尽力翻译),顺便说一下,我使用 Web 服务来管理 glassfish 而不是 win 控制台。

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

    [#|2010-04-29T09:46:59.909+0200|SEVERE|sun-appserver2.1|org.apache.catalina.core.StandardContext|_ThreadID=27;_ThreadName=Thread-418;_RequestID=9bff8714- d870-4f30-8a7a-22dca0375b6b;|PWC1300: 初始化上下文中的资源时出错/foo|#]

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

    [#|2010-04-29T09:46:59.925+0200|SEVERE|sun-appserver2.1|org.apache.catalina.core.StandardContext|_ThreadID=27;_ThreadName=Thread-418;_RequestID=9bff8714- d870-4f30-8a7a-22dca0375b6b;|PWC1306:上下文/foo的启动失败,因为之前的错误|#]

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-12
      • 2015-09-20
      • 1970-01-01
      • 2017-01-19
      • 2012-01-17
      • 2013-01-26
      • 1970-01-01
      相关资源
      最近更新 更多