我想创建一个完全独立的FrontEnd
和BackEnd
的Java EE应用程序。我找到了一些教程,将这两个模块打包成一个EAR文件。我可以创建它,我可以将我的应用程序部署到应用程序服务器。
出于安全考虑,我现在必须单独部署FrontEnd(Tomcat)和BackEnd(Weblogic)。
我有什么:
前
返回:
这两个层之间的通信接口将是RMI
个调用。
我有一个带有这两个模块的EAR项目的第一个解决方案正在运行,因为我的backEnd模块pom.xml包装是jar
:
<packaging>jar</packaging>
因此,我可以将这个构建的jar
包含在我的frontEnd的类路径中,并且我的frontEnd会看到所需的类。
现在我尝试从我的backEnd创建ear,因为使用jar
打包我不能将所需的库包含到我的后端,并且它们在运行时丢失了。所以我在ear
Ok中将backEnd打包更改为pom.xml
,但如果我从backEnd构建EAR
,那么我就不能将它包含在我的frontEnd类路径中,而且我的前端无法看到所需的类后端。
对不起,我对此完全感到困惑。你能给我任何建议或教程,说明分离这两个模块的正确方法是什么。例如,如何使用EAR
同时构建JAR
和maven
?
非常感谢你!
答案 0 :(得分:2)
试试这可能有助于你的问题.. http://maven.apache.org/plugins/maven-ear-plugin/examples/skinny-wars.html
在典型的J2EE环境中,WAR包装在EAR中以进行部署。 WAR可以在WEB-INF / lib中包含其所有依赖的JAR,但是如果存在多个WAR,则由于存在重复的JAR,EAR可以快速增长。相反,J2EE规范允许WAR通过其MANIFEST.MF中的Class-Path设置引用EAR中打包的外部JAR。
答案 1 :(得分:1)
在项目的某个地方,你应该有一个带有EJB的模块和相应的包装类型&#34; ejb&#34;。通常是&#34; ejb-client&#34;人工制品也会产生。这可以用作前端的依赖项。 前端应打包为#34; war&#34;,后端为&#34; ear&#34;。
查看相应的maven插件(EAR,WAR,EJB):
答案 2 :(得分:1)
如果您的前端在JSF中,则创建一个单独的maven项目,该项目将包含所有与UI相关的代码(css / js / * .jsf和Backing Bean),例如DemoProject-UI将是您的前端项目名称。编写所有UI这个项目中相关的事情。
现在,您的JSF页面支持bean需要与服务层进行通信。为此,创建一个单独的maven项目,例如DemoProject-Service。您可以在此项目中编写一个Web服务,该服务将由DemoProject-UI通过代理访问。 DemoProject-Service将有一个将被调用的Web服务,它将使用Spring服务/ DAO等具有后端逻辑。
根据你的问题,它询问你想要在seprate服务器上运行如DemoProject-UI将运行(Tomcat)和DemoProject-Model将运行 on(Weblogic)。现在你有2个seprate项目在2个不同的服务器上运行。
如果要将两者保存在同一台服务器上,则将第二个项目的maven依赖项添加到第一个项目,而无需使用Web服务。
答案 3 :(得分:1)
最好的方法是你可以创建模块并创建一个final 作为父pom项目,您可以从主项目部署。 所以最后一个主要项目将在构建sub之后构建 模块。
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com</groupId>
<artifactId>practice</artifactId>
<version>0.0.1</version>
</parent>
<groupId>com.xplanr</groupId>
<artifactId>SheelBatchClient</artifactId>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>2.22.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.6.5</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.6.5</version>
</dependency>
<dependency>
<groupId>org.codehaus.jettison</groupId>
<artifactId>jettison</artifactId>
<version>1.3.8</version>
</dependency>
</dependencies>
<description>Xplanr Batch Client</description>
<name>xplanrBatchClient</name>
<scm>
<connection>scm:git:git//github.com/XplanrAnalyticsInc/XplanrMain.git</connection>
</scm>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/utility/XplanrBatchClient/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
<executions>
<execution>
<id>copy-resources</id>
<!-- here the phase you need -->
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/utility/XplanrBatchClient</outputDirectory>
<resources>
<resource>
<directory>src/main/utility/XplanrBatchClient</directory>
<filtering>true</filtering>
</resource>
</resources>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>create</goal>
</goals>
</execution>
</executions>
<configuration>
<format>{0,number}</format>
<items>
<item>buildNumber</item>
</items>
<doCheck>false</doCheck>
<doUpdate>false</doUpdate>
<revisionOnScmFailure>unknownbuild</revisionOnScmFailure>
<!-- <shortRevisionLength>5</shortRevisionLength> -->
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
<configuration>
<jarName>xplanrBatchClient</jarName>
<version>1.0.0</version>
<outputDirectory>${project.build.directory}/utility/XplanrBatchClient/lib</outputDirectory>
<archive>
<manifestEntries>
<implementation-version>${project.version}</implementation-version>
<implementation-build>${buildNumber}</implementation-build>
</manifestEntries>
</archive>
</configuration>
</plugin>
</plugins>
</build>
<version>1.0.0</version>
2. 然后你必须为主项目创建一个pom 在那里你必须提到父母,你可以在下面看到
<parent>
<groupId>com</groupId>
<artifactId>practice</artifactId>
<version>0.0.1</version>
</parent>
<groupId>com.practice</groupId>
<artifactId>framework</artifactId>
<packaging>war</packaging>
<version>1.0.0</version>
<name>DAG Maven Webapp</name>
<url>http://www.practiceanalytics.com/</url>
<repositories>
<repository>
<id>practice</id>
<name>framework</name>
<url>file://libs</url>
</repository>
<repository>
<id>cloudera</id>
<url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<dependencies>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>default-jar</id>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classifier>client</classifier>
<finalName>udf-framework</finalName>
<includes>
<include>**/udf/*</include>
</includes>
<outputDirectory>${project.build.directory}/udf/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<!-- <archiveClasses>true</archiveClasses>
<webresources>
<resource>
<directory>src/main/resources</directory>
<targetpath>WEB-INF/classes</targetpath>
<filtering>true</filtering>
</resource>
</webresources>
<warName>${project.war.name}</warName>
<warSourceExcludes>**/*.class</warSourceExcludes> -->
<archive>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
<finalName>framework</finalName>
</build>
<description>Web Project for Practice Code</description>