在我的mavenized EAR 项目中“在服务器上运行”时,我总是遇到以下情况。
如果我在我的EAR项目中采取以下步骤:
...将导致:
Maven 生成的 application.xml 将是正确的:
<application xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd" version="5">
<display-name>com.company.fbps.api.impl.ear</display-name>
<module>
<ejb>com.company.fbps.api.impl.ejb-0.0.1-SNAPSHOT.jar</ejb>
</module>
</application>
虽然EJB项目“com.company.fbps.api.impl.ejb”是EAR项目的maven依赖项:
(在“com.company.fbps.api.impl.ejb”pom.xml中)
<dependency>
<groupId>com.company.fbps.api.impl.ejb</groupId>
<artifactId>com.company.fbps.api.impl.ejb</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>ejb</type>
</dependency>
...但在服务器上运行生成的 application.xml 不正确:
Oracle WebLogic Server插件将生成 application.xml :
...\.metadata\.plugins\org.eclipse.core.resources\.projects\com.company.fbps.api.impl.ear\beadep\fbp_local_test\com.company.fbps.api.impl.ear\split_src
....拥有错误的EJB jar名称:
<application xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd" version="5">
<display-name>com.company.fbps.api.impl.ear</display-name>
<module>
<ejb>com.company.fbps.api.impl.ejb.jar</ejb>
</module>
</application>
因此,在此过程中,某些集成并未意识到Maven生成不同的 ejb.jar 名称这一事实,并且这不用于“在服务器上运行”。
我找到了一种解决方法,让它以某种方式运行。
如果您在"Maven - Update Project Configuration ..."
之前说"Run on Server"
,它就会运行一次。
但是在下一次构建之后会再次腐败。
您是否知道如何在不使用我的解决方法的情况下纠正这种情况?
答案 0 :(得分:2)
我使用weblogic-maven-plugin将我的耳朵部署到weblogic。以下是来自pom的示例配置。这应该是你的耳朵项目pom。确保正确添加依赖项,maven存储库中不提供依赖项。我必须手动安装它们,同样必须使用weblogic jarbuilder构建wlfullclient.jar 正确配置后,创建一个目标为weblogic:deploy的maven构建运行配置。这应该将工件部署到您的weblogic服务器。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>weblogic-maven-plugin</artifactId>
<version>2.9.1</version>
<configuration>
<adminServerHostName>localhost</adminServerHostName>
<adminServerPort>7001</adminServerPort>
<userId>${username}</userId>
<password>${password}</password>
<upload>false</upload>
<remote>false</remote>
<verbose>false</verbose>
<debug>true</debug>
<targetNames>${server}</targetNames>
<exploded>false</exploded>
</configuration>
<dependencies>
<dependency>
<groupId>weblogic</groupId>
<artifactId>weblogic</artifactId>
<version>${weblogic.version}</version>
</dependency>
<dependency>
<groupId>weblogic</groupId>
<artifactId>wlfullclient</artifactId>
<version>${weblogic.version}</version>
</dependency>
<dependency>
<groupId>weblogic</groupId>
<artifactId>webservices</artifactId>
<version>${weblogic.version}</version>
</dependency>
<dependency>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
<version>2.3.0</version>
</dependency>
</dependencies>
</plugin>
答案 1 :(得分:2)
此消息:
Caused By: java.io.FileNotFoundException:
C:\<ECLIPSE WORKSPACE PATH>\.metadata\.plugins\org.eclipse.core.resources\.projects\<EAR PROJECT NAME>\beadep\<SERVER DOMAIN NAME>\<EAR PROJECT NAME>\<WAR NAME>
是由META-INF / application.xml和.settings / org.eclipse.wst.common.component之间的冲突引起的。我使用尖括号来表示路径中的变量,因为这些部分对每个人都不同。
<EAR PROJECT NAME>
由org.eclipse.wst.common.component确定:
<wb-module deploy-name="<EAR PROJECT NAME>">
<WAR NAME>
也是从org.eclipse.wst.common.component:
<dependent-module archiveName="<WAR NAME>"......
application.xml的web-uri标记中的war名称应该与org.eclipse.wst.common.component中的archiveName属性匹配:
如果它们不相同,Eclipse会感到困惑,并且不知道在哪里查找war文件。请注意,这仅适用于使用Eclipse构建项目时。您可以更改任一文件来解决问题,但是,由于Eclipse创建org.eclipse.wst.common.component,它可能会在您不知情的情况下更改,因此我建议您更改application.xml。