用Maven打包成EAR部署JBoss

基于原理的架构里面,考虑这次升级版本,可谓是一步一个脚印的向上走啊,可以说步步为坎,别人的知识,和自己的知识,相差很多啊,什么都懂点,但是具体没有使用,就理解不深刻了,心有余而力不足,所以一切我们自己来操作吧,可谓是体会深刻了,各种错,各种bug,是最好的学习进步的见证吧,

最近的升级Jboss版本到EAP6.2,所谓是版本升级,内容新增很多啊,比5.1改观不少,现在我们遇到的问题是注入到EJB容器内部的实体在最后的持久化的数据库的时候报错了,实体找不到,报错如下:

<span style="font-size:18px;">JBWEB000065: HTTP Status 500 - Request processing failed; nested exception is javax.ejb.EJBTransactionRolledbackException: Unknown entity: Jc.entity.Student
</span>

在尝试几种方法解决,我做了使用达成EAR包的形成测试,具体步骤总结分享(0、1、2加载顺序)

0:封装了mgr接口和实体

1:

2:web层

我要把这三个包打成一个eao包,把相互的依赖关系打到一起,参考官网

新建一个Mavne Project,写入pom文件内容

<span style="font-size:18px;"><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.tgb</groupId>
	<artifactId>lishehetestear</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>ear</packaging>
	<build>
		<plugins>
			<plugin>
				<artifactId>maven-ear-plugin</artifactId>
				<version>2.9</version>
			</plugin>
		</plugins>
	</build>
</project></span>

如果pom文件报错,那么安装一下 m2e-wtp这个插件,插件地址

插件装好之后,需要把需要打入的jar和war包都添加到里面来

<span style="font-size:18px;"><dependencies>
		<dependency>
			<groupId>com.tgb</groupId>
			<artifactId>lishehe_api</artifactId>
			<version>0.0.1-SNAPSHOT</version>
			<type>jar</type>
		</dependency>

		<dependency>
			<groupId>com.tgb</groupId>
			<artifactId>lishehe_core</artifactId>
			<version>0.0.1-SNAPSHOT</version>
			<type>jar</type>
		</dependency>
		<dependency>
			<groupId>com.tgb</groupId>
			<artifactId>lishehe_war</artifactId>
			<version>0.0.1-SNAPSHOT</version>
			<type>war</type>
		</dependency>
	</dependencies></span>

然后运行mvn的命令    ear: generate-application-xml,此命令是用来生成ear中的部署描述符的。

成功之后运行mvn的命令,ear:ear,,成功后,从target开发打包好的ear,发现要打包的几个包外,几个依赖的包也都在里面,ear提供的插件Creatin Skinny WARS

<span style="font-size:18px;"><span style="font-size:18px;"><plugin>
	<artifactId>maven-ear-plugin</artifactId>
	<version>2.9</version>
	<configuration>
		<packagingIncludes>META-INF/**,**/lishehe_*.jar,**/lishehe_*.war</packagingIncludes>
	</configuration>
</plugin></span></span>

注:上面这句话是说要将META-INF下(有application.xml等)及所有的lishehe开头的jar、war都打包进来。

现在再来看,这样生成的ear包如下,现在就只剩下我们需要部署的jar及war。

现在可以打成EAR包了,当我加载的时候出现了问题,空指针,Jboss按照字母加载,需要改成按照一定的依赖关系加载

只是在pom中对JBoss进行配置,还得将那些jar加载顺序写到application.xml文件(用ear:generate-application-xml生成的)里面。

<span style="font-size:18px;"><span style="font-size:18px;"><plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-ear-plugin</artifactId>
				<version>2.9</version>
				<configuration>
					<packagingIncludes>META-INF/**,**/lishehe_*.jar,**/lihehe_*.war</packagingIncludes>
					<jboss>
						<version>5</version>
						<module-order>strict</module-order>
					</jboss>
					<modules>
						<jarModule>
							<groupId>com.tgb</groupId>
							<artifactId>lishehe_api</artifactId>
							<includeInApplicationXml>true</includeInApplicationXml>
						</jarModule>
						<jarModule>
							<groupId>com.tgb</groupId>
							<artifactId>lishehe_core</artifactId>
							<includeInApplicationXml>true</includeInApplicationXml>
						</jarModule>
						<webModule>
							<groupId>com.tgb</groupId>
							<artifactId>lishehe_war</artifactId>

						</webModule>
					</modules>

				</configuration>

			</plugin>
		</plugins></span></span>

application.xml中文件生成是

<span style="font-size:18px;"><span style="font-size:18px;"><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE application PUBLIC
	"-//Sun Microsystems, Inc.//DTD J2EE Application 1.3//EN"
	"http://java.sun.com/dtd/application_1_3.dtd">
<application>
  <display-name>lishehetestear</display-name>
  <module>
    <java>lishehe_api-0.0.1-SNAPSHOT.jar</java>
  </module>
  <module>
    <java>lishehe_core-0.0.1-SNAPSHOT.jar</java>
  </module>
  <module>
    <web>
      <web-uri>lishehe_war-0.0.1-SNAPSHOT.war</web-uri>
      <context-root>/lishehe_war</context-root>
    </web>
  </module>
</application></span></span>

jboss-app.xml内容

<span style="font-size:18px;"><span style="font-size:18px;"><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss-app PUBLIC
	"-//JBoss//DTD Java EE Application 5.0//EN"
	"http://www.jboss.org/j2ee/dtd/jboss-app_5_0.dtd">
<jboss-app>
  <module-order>strict</module-order>
</jboss-app></span></span>

全的pom内容

<span style="font-size:18px;"><span style="font-size:18px;"><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.tgb</groupId>
	<artifactId>lishehetestear</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>ear</packaging>
	<url>http://maven.apache.org</url>

	<dependencies>
		<dependency>
			<groupId>com.tgb</groupId>
			<artifactId>lishehe_api</artifactId>
			<version>0.0.1-SNAPSHOT</version>
			<type>jar</type>
		</dependency>

		<dependency>
			<groupId>com.tgb</groupId>
			<artifactId>lishehe_core</artifactId>
			<version>0.0.1-SNAPSHOT</version>
			<type>jar</type>
		</dependency>
		<dependency>
			<groupId>com.tgb</groupId>
			<artifactId>lishehe_war</artifactId>
			<version>0.0.1-SNAPSHOT</version>
			<type>war</type>
		</dependency>
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-ear-plugin</artifactId>
				<version>2.9</version>
				<configuration>
					<packagingIncludes>META-INF/**,**/lishehe_*.jar,**/lihehe_*.war</packagingIncludes>
					<jboss>
						<version>5</version>
						<module-order>strict</module-order>
					</jboss>
					<modules>
						<jarModule>
							<groupId>com.tgb</groupId>
							<artifactId>lishehe_api</artifactId>
							<includeInApplicationXml>true</includeInApplicationXml>
						</jarModule>
						<jarModule>
							<groupId>com.tgb</groupId>
							<artifactId>lishehe_core</artifactId>
							<includeInApplicationXml>true</includeInApplicationXml>
						</jarModule>
						<webModule>
							<groupId>com.tgb</groupId>
							<artifactId>lishehe_war</artifactId>

						</webModule>
					</modules>

				</configuration>

			</plugin>
		</plugins>
	</build>

</project></span></span>

剩下的就是部署了,直接扔到Jboss里面即可,

总结

这个时候深刻体会到英语很重要啊,细心的深入的去学习,查资料(外网的靠谱)。

时间: 2024-08-07 08:38:06

用Maven打包成EAR部署JBoss的相关文章

maven打包成jar,并排除指定文件

maven打包成jar,配置如下 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.4</version> <configuration> <finalName>order</finalName> <archive>

VS2010把项目发布、打包成可安装部署的应用程序

本文要解决的问题: 详细介绍用VS2010将项目发布.打包成可部署的应用程序的过程,通过一步步操作,最后能顺利完成. 1. 在vs2010 选择"新建项目"à" 其他项目类型"à" Visual Studio Installerà "安装项目": 命名为:Setup1 . 这是在VS2010中将有三个文件夹, 1."应用程序文件夹"表示要安装的应用程序需要添加的文件: 2."用户的'程序'菜单"表

spirng boot打包成war部署

最近一段时间一直在研究和学习springboot,感觉其十分便利好用.以前使用spring搭建项目都整好多繁琐的配置,使用了springboot后这些繁琐的配置统统都不要了.但就是对springboot部署的方式感觉有点不爽,还是比较喜欢打包成war来进行部署. 在spring中有这样一个类:org.springframework.web.SpringServletContainerInitializer,阅读该类的注释发现该类的作用是使用编程方式的替代web.xml的.其原理就在于该类位于sp

maven打包成第三方jar包且把pom依赖包打入进来

<build> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>com.allen.capturewebdata.Main</mainClass> </manifest> </archive&

Maven打包成Jar文件时依赖包的问题

我们项目中使用到第三方的库文件,这些jar库文件并没有放到Maven中央库上,导致我们需要在项目中自己配置使用.我们的两三个开发人员对Java都是很熟,因此在使用中遇到了一些问题,表现在:在本地中引入第三方jar包后,在Idea中进行相应设置后,可以调试运行了,但是用Docker打包上传到服务器后,运行时会提示找不到某些类的定义. 经查看这些找不到的类就是来自第三方库,那么问题有可能是第三方jar包的路径问题,或者是根本就没有打包进jar文件里面.我们可以去Docker容器内部查看jar文件,执

maven打包成可执行文件

POM 文件中添加 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>2.3</version> <configuration> <appendAssemblyId>false</appendAssemblyId> <

maven打包成jar

maven pom.xml中添加依赖 <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.4</version> <configuration> <archive> <mani

maven 打包成 .jar 文件执行:没有主清单属性错误

报错原因是pom.xml配置文件中没有指定main入口信息,在pom.xml文件中添加如下代码: <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>1.2.1</version> <executio

maven把项目打包成jar包后找不到velocity模板的bug

使用springmvc 开发时候要实现发送velcotiy模板邮件,在配置正常后,在本地测试正常后,使用maven打包成jar包后,报以下错误, Caused by: org.apache.velocity.exception.ResourceNotFoundException: Unable to find resource 'templates/index.vm' at org.apache.velocity.runtime.resource.ResourceManagerImpl.load