JBOSS EAP 6 系列六 公共模块的jar配置到jboss的modules详细配置

公司项目中遇到并要解决的问题

1:原则上除了自己写的代码之外,公共的jar不应该都在打包的时候打包到ear里面,这样的话包太大,也不符合的分层的逻辑,在jboss容器内部,每个ear的包重复jar都会调入jboss内部,而造成浪费过多地的服务器资源,会出现不定期的异常。

2:jboss eap 6.*系列,需要模块化配置,需要加载的jar,解决如何在jboss里面配置

3:公共的jar在jboss里面已经配置,加载……但是源码运行的时候不能根据maven的配置,加载jar的路径的问题

第一步:配置模块

配置mysql和oracle驱动的方式,详情看我的博客不在重复

http://blog.csdn.net/lishehe/article/details/43069361

我们现在把相关的spring的公共的jar、shiro等等抽取到jboss模块中配置,在自己的jboss下的modules模块中,添加相关的jar的配置即可

第二步:需要在每一条线的war\core\parent的pom文件对jar的依赖添加

<scope>provided</scope>

这句话的意思就是在我们开发、编译的时候会加载jar,在打包的时候不会打入到ear包内部,而会自动通过容器提供的jar来加载

如下

War修改

<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<scope>provided</scope>
		</dependency>

<dependency>
			<groupId>commons-lang</groupId>
			<artifactId>commons-lang</artifactId>
			<version>2.6</version>
			<scope>provided</scope>
		</dependency>
<dependency>
			<groupId>org.apache.shiro</groupId>
			<artifactId>shiro-cas</artifactId>
			<version>${shiro.version}</version>
			<scope>provided</scope>
		</dependency>

		<dependency>
			<groupId>net.sf.ehcache</groupId>
			<artifactId>ehcache-core</artifactId>
			<version>${ehcache.version}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
		<groupId>org.jasig.cas.client</groupId>
			<artifactId>cas-client-core</artifactId>
			<version>${cas.version}</version>
			<scope>provided</scope>
		</dependency>
<dependency>
			<groupId>commons-fileupload</groupId>
			<artifactId>commons-fileupload</artifactId>
			<version>1.3.1</version>
			<scope>provided</scope>
		</dependency>

每个系统的parent的pom文件,修改完组长记得deploy一份

<dependency>
				<groupId>org.hibernate</groupId>
				<artifactId>hibernate-core</artifactId>
				<version>${hibernate.version}</version>
				 <scope>provided</scope>
			</dependency>

			<dependency>
				<groupId>org.codehaus.jackson</groupId>
				<artifactId>jackson-mapper-asl</artifactId>
				<version>1.9.13</version>
				<scope>provided</scope>
			</dependency>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-webmvc</artifactId>
				<version>${spring.version}</version>
				 <scope>provided</scope>
			</dependency>

			<dependency>
				<groupId>javax</groupId>
				<artifactId>javaee-api</artifactId>
				<version>${javaee-api.version}</version>
				<scope>provided</scope>
			</dependency>

第三步:ear中添加对jar包的路径的加载配置,修改ear中的jboss-deployment-structure.xml

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
	<sub-deployment name="itoo-authority-role-web-0.0.1-SNAPSHOT.war">
		<dependencies>
			<module name="org.jboss.xnio" />

			<module name="org.apache.shiro">
				<imports>
					<include path="META-INF**" />
					<include path="org**" />
				</imports>
			</module>
			<module name="org.jasig.cas.client">
				<imports>
					<include path="META-INF**" />
					<include path="org**" />
				</imports>
			</module>
			<module name="org.springframework.data">
				<imports>
					<include path="META-INF**" />
					<include path="org**" />
				</imports>
			</module>
			<module name="org.crazycake">
				<imports>
					<include path="META-INF**" />
					<include path="org**" />
				</imports>
			</module>
<module name="commons-fileupload">
				<imports>
					<include path="META-INF**" />
					<include path="org**" />
				</imports>
			</module>
			<module name="org.codehaus.jackson">
				<imports>
					<include path="META-INF**" />
					<include path="org**" />
				</imports>
			</module>
			<module name="redis.clients">
				<imports>
					<include path="META-INF**" />
					<include path="org**" />
				</imports>
			</module>
			<module name="org.apache.commons.commons-pool2">
				<imports>
					<include path="META-INF**" />
					<include path="org**" />
				</imports>
			</module>
			<module name="org.springframework">
				<imports>
					<include path="META-INF**" />
					<include path="org**" />
				</imports>
			</module>
		</dependencies>
	</sub-deployment>
</jboss-deployment-structure>

第四步

这样的话,我们大部分的公共的jar都不会打入到ear包中,现在的测试的ear经过咱们整合之后,会在6M左右

总结

整个解决问题的过程中,更多的是查找英文资料和文档,相信解决问题的办法总比困难多……

时间: 2024-10-22 09:56:22

JBOSS EAP 6 系列六 公共模块的jar配置到jboss的modules详细配置的相关文章

JBOSS EAP 6 系列一 新特性

在项目中,采用的架构是Springmvc+spring+EJB+Jpa等架构,当然服务器是Jboss,本次Jboss我们采用的是JBossEap6.2,Jboss7的新特性与Jboss4.5的大的改变是: 模块申明式容器 JBOSS EAP不再有lib的概念,一切都是module.无论是系统调用的lib,用户编制的lib,或者应用程序引用到的第三方lib都以模块的方式构建起来,并在使用的地方申明具体使用了哪个模块.这就带来两个好处, 按官方的说法提供了一种完全的模块化的类加载系统,JBOSS会根

JBOSS EAP 6 系列四 EJB实现——调用(贯穿始终的模块)

本文主要介绍在JBOSS EAP 6.2(或者JBOSS AS7)中模块是如何贯穿EJB实现的始终.延续上一博文<认识模块的使用>的话题继续聊JBOSS做为模块申明式容器的这一特性在EJB实现中的完全贯彻. Session bean JBOSS EAP(AS7)中默认的EJB是3.1版本遵循JSR318规范.EJB从3.0开始已经全面引入Annotation的概念,3.0以前的EJB需要在XML文件里面对Bean所做的配置都能通过标签的方式在代码中实现.同时,之前为了工厂模式而做的双接口Hom

JBOSS EAP 6 系列三 Oracle、Mysql数据源的配置(驱动)—认识模块的使用

本文介绍JBOSS EAP 6.2中Oracle数据源的配置方式.结合之前JBOSS EAP 6.2新功能,本文初识JBOSS模块申明式容器这一特性. 模块申明式容器:JBOSS EAP不再有lib的概念,一切都是module.无论是系统调用的lib,用户编制的lib,或者应用程序引用到的第三方lib都以模块的方式构建起来,并在使用的地方申明具体使用哪个模块. 以下分三步介绍数据源的配置: 将数据库驱动构建为JBOSS内的模块 为JBOSS容器加载驱动模块 为JBOSS容器配置数据源 1.将数据

Java之------单机版书店管理系统(设计思想和设计模式系列六)销售模块

书店管理系统 书店管理系统可以说是设计模式及设计思想的一个比较经典的例子. 本系列将分为多个部分讲述此输电管理系统. 书店管理系统将分为:用户.图书.进货.销售和库存五个模块,另外还有公共包.工具包和登录包,另外还有一个框架. 对于分层设计,都是表现层可以调用逻辑层,逻辑层调用数据层,数据层调用工具和公共包,方向不可打乱,必须严格按照这种模式. 本篇将做销售模块. 注:本篇需要使用到的框架在本系列二的用户模块: 链接:http://blog.csdn.net/x121850182/article

BurpSuite系列(六)----Repeater模块(中继器)

一.简介 Burp Repeater 是一个手动修改并补发个别 HTTP 请求,并分析他们的响应的工具.它最大的用途就是和其他 Burp Suite 工具结合起来.你可以从目标站点地图,从 Burp Proxy 浏览记录,或者从 Burp Intruder 攻击结果上的请求,发送到 Repeater 上,并手动调整这个请求来微调对漏洞的探测或攻击. 二.模块说明 1.可以从Proxy history.site map.Scanner等模块中右键菜单send to repeater发送到repea

直通BAT必考题系列:深入详解JVM内存模型与JVM参数详细配置

VM基本是BAT面试必考的内容,今天我们先从JVM内存模型开启详解整个JVM系列,希望看完整个系列后,可以轻松通过BAT关于JVM的考核. BAT必考JVM系列专题 1.JVM内存模型 2.JVM垃圾回收算法 3.JVM垃圾回收器 4.JVM参数详解 5.JVM性能调优 JVM内存结构 由上图可以清楚的看到JVM的内存空间分为3大部分: 堆内存 方法区 栈内存 其中栈内存可以再细分为java虚拟机栈和本地方法栈,堆内存可以划分为新生代和老年代,新生代中还可以再次划分为Eden区.From Sur

动态配置 JBOSS ( eap 6.2 ) 数据源

操作环境 windows + jboss eap 6.2 + MyEclipse 10.0 项目用的是jboss eap 6.2,作为Red公司升级后的eap稳定版. 相比之前的 AS 系列,不管是安全性和集群的稳定性,加上天然的出厂配置上都好了非常多. 对于开发人员来讲.省去了非常多工作. 配置远程接口 <interface name="management"> <inet-address value="${jboss.bind.address.manag

Python学习系列(六)(模块)

一,模块的基本介绍 1,import引入其他标准模块 标准库:Python标准安装包里的模块. 引入模块的几种方式: i)引入模块:import   moduleName ii)引入模块下的函数:from moduleName import function1,function2,-- iii)引入模块下的所有函数:from moduleName import * 使用模块里的函数的方法: moduleName.function(agrs) 示例: >>> import math >

【C++自我精讲】基础系列六 PIMPL模式

0 前言 很实用的一种基础模式. 1 PIMPL解释 PIMPL(Private Implementation 或 Pointer to Implementation)是通过一个私有的成员指针,将指针所指向的类的内部实现数据进行隐藏. 2 PIMPL优点 举例: //x.h class X { public: void Fun(); private: int i; //add int i; }; //c.h #include <x.h> class C { public: void Fun()