在做EJB3项目中,遇到这样两个问题:
第一个是web项目去调用sessionBean,这个web项目中用到了struts2和spring,所以web项目的web-info的lib下会有相应的struts2和spring的jar包,然而我们现在需要这样几个web项目去掉不同的sessionBean,而这些web项目技术基本一样,也就是都有struts2和spring,所以这些jar包如果分别在web项目中就会显得非常冗余,主要的问题就是想把这些相同的包放到jboss的lib下。所以现在就需要把这些jar拷贝到jboss服务器中,拷贝到哪里面去?
第二个就是持久化需要一个数据库驱动,这个驱动也是需要拷贝到jboss服务器中,也是拷贝到那里面去?
这两个问题其实是一样的,都是把外面应用的jar文件放到jboss那个目录的问题。所以这就需要我们来了解jboss的目录结构:
bin 启动和关闭JBoss的脚本
client 客户端与JBoss通信所需的的Java库(JARs)
docs 配置的样本文件(数据库配置等)
doc/dtd 在JBoss中使用的各种XML文件的DTD。
lib 一些JAR,JBoss启动时加载,且被所有JBoss配置共享。(不要把你的库放在这里)
server 各种JBoss配置。每个配置必须放在不同的子目录。子目录的名字表示配置的名字。JBoss包含3个默认的配置:minimial,default和all。
server/all JBoss的完全配置,启动所有服务,包括集群和IIOP。
server/default JBoss的默认配置。在没有在JBoss命令航中指定配置名称时使用。
server/default/conf JBoss的配置文件。
server/default/data JBoss的数据库文件。比如,嵌入的数据库,或者JBossMQ。
server/default/deploy JBoss的热部署目录。放到这里的任何文件或目录会被JBoss自动部署EJB、WAR、EAR,甚至服务。
server/default/lib 一些JAR,JBoss在启动特定配置时加载他们。 (all和minimial配置也包含这个和下面两个目录。)
server/default/log JBoss的日志文件。
server/default/tmp JBoss的临时文件。
明白了这些之后,我们就会发现我们应该把这些jar包放到server/default/lib下,这样在JBoss启动的时候就会加载它们,而不是拷贝到lib下。
拷贝之后,运行无误。而放到lib下就会报相应异常。
所以其实这些问题的本质在于jboss的目录问题,要想解决问题在于知道问题出现的根本在什么地方。