2011-06-07 154 views
13

我正在寻找将我在Eclipse中编写的Web服务部署到EAR文件。我可以将它作为WAR导出,并将它部署在Tomcat上的所有内容都很好,但最终的产品不会在Tomcat上,也不会成为WAR文件。我需要使用Websphere作为服务器,我可以访问它并可以部署有效的EAR文件...如果我要部署EAR文件。如何在Eclipse中从动态Web项目构建EAR文件?

这么久以来,我如何从Eclipse的Dynamic Web Project导出EAR文件?

回答

10

您需要在Eclipse中创建企业应用程序项目(基本上是一个EAR),将Dynamic Web Project添加到EAR项目,然后导出整个项目。

+0

@ Matt-出于某种原因,我这样做后,websphere给我一个错误:'EAR文件可能已损坏和/或不完整。确保该应用程序处于兼容的Java 2平台企业版(J2EE)级别,用于WebSphere Application Server.'是否有我缺少的配置设置,或许? – ZKSteffel 2011-06-07 16:12:48

+0

我错过了很多配置设置,如我的一些其他帖子所示。因此,一旦我的语言版本正确,我就可以创建与我的项目相关的EAP,并确保包含application.xml,然后将其导出为EAR文件。 – ZKSteffel 2011-06-10 17:50:53

+0

对不起,我没有更有用的解决错误,但我很高兴你得到它的工作。 – 2011-06-10 18:11:38

1

为此,我使用Ant构建脚本(您可以在Eclipse中创建一个新的Ant文件,将其存储在您的动态Web项目根目录中,然后右键单击>在您想从eclipse运行时运行它。 。像下面基本上你的战争复制到一个目录,$ {} earDir下面脚本,并构建一个EAR(EAR的仅仅是一个类型的JAR):

<target name="buildEar" depends="init"> 
    <copy tofile="${earDir}/" file="yourWarFile"/> 
    <copy tofile="${earDir}/META-INF/application.xml" file="localDirectory/application.xml"/> 
    <copy todir="${earDir}/META-INF"> 
     <fileset dir="localDirectory" includes="was.policy" /> 
    </copy> 
    <jar jarfile="localDir/something.ear" basedir="${earDir}"> 
     <!-- Define the properties for the Manifest file. --> 
     <manifest> 
      <attribute name="Implementation-Vendor" value="Company name"/> 
      <attribute name="Implementation-Title" value="Application Title"/> 
      <attribute name="Implementation-Version" value="version and build number"/> 
     </manifest>  
    </jar> 
</target> 

你的was.policy文件将是这样的东西(不是很好给予所有权限,但您可以在稍后启用并运行后更改它):

// 
// Template policy file for enterprise application. 
// Extra permissions can be added if required by the enterprise application. 
// 
// NOTE: Syntax errors in the policy files will cause the enterprise application FAIL to start. 
//  Extreme care should be taken when editing these policy files. It is advised to use 
//  the policytool provided by the JDK for editing the policy files 
//  (WAS_HOME/java/jre/bin/policytool). 
// 

grant codeBase "file:${jars}" { 
}; 

grant codeBase "file:${connectorComponent}" { 
}; 

grant codeBase "file:${webComponent}" { 
}; 

grant codeBase "file:${ejbComponent}" { 
}; 

grant codeBase "file:${application}" { 
    permission java.security.AllPermission; 
}; 

你application.xml文件将是这样的:

<?xml version="1.0" encoding="UTF-8"?> 
<application id="Application_ID" version="1.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/application_1_4.xsd"> 
    <display-name>yourAppName</display-name> 
    <module id="WebModule_1240219352859"> 
     <web> 
      <web-uri>yourWarFile.war</web-uri> 
      <context-root>urlToApplication</context-root> 
     </web> 
    </module> 
</application> 

的ID应该是确定他们需要的是每穗我认为唯一的(或者是服务器不能记住)。

我希望这会有所帮助。

+0

嘿@gurnard,我有一个类似的问题,除了我需要在'weblogic'上部署'.ear'。在Oracle管理员控制台上安装后,我在访问项目时遇到了一些问题。我似乎无法弄清楚如何访问我的项目所具有的index.jsp页面。任何想法可能会出错? – TheLuminor 2015-12-04 12:28:20

+0

这里是我发布的问题,请看一看,它会帮助你知道究竟在哪里被卡住。 @gurnard http://stackoverflow.com/questions/34086464/how-to-correctly-deploy-a-ear-file-on-oracle-weblogic-administrator-console – TheLuminor 2015-12-04 12:29:11

+0

你好。抱歉,我从未使用过weblogic – Gurnard 2015-12-07 08:16:54

相关问题