使用 Maven 开发 EJB 应用

在复杂的企业IT架构中,Web模块主要用途其实是展现层,它接收到用户的请求后委托后端的ejb完成业务逻辑,这样可以方便的获得保障业务事务及分布式事务、多客户端调用的好处,然后将ejb的处理结果以可视化形式展现给用户,如此的分层可以方便的对ejb业务实施可复用和分布式。

ejb通常都是jar文件,web通常是war文件,一般都是独立部署。但是,有的时候,我们也希望将某些ejb和web打包在一起,这就是企业应用EAR。

假设要完成ear中包含一个ejb模块和一个web模块,分别为:ejb3和web。两个模块独立开发完成后执行install安装到本地mavven库。然后再建立一个ear模块(其实就是一个普通的maven项目,只是设置pom打包类型为ear)。

首先开发ejb模块,pom的大致为



    
        hello-ejb
        io.predictech.ejb
        0.1
    
    4.0.0
    ejb3
    ejb

    
        ${project.artifactId}
        
            
                org.apache.maven.plugins
                maven-ejb-plugin
                3.0.0
                
                    3.1
                    true
                
            
        
    

以上pom文件需要注意的点:

  1. 打包类型需为:ejb
  2. 使用了ejb插件:maven-ejb-plugin
  3. 插件生成了ejb客户端jar:generateClient
官网可以参考:http://maven.apache.org/plugins/maven-ejb-plugin/

开发web模块,大致的pom如下



    
        hello-ejb
        io.predictech.ejb
        0.1
    
    4.0.0
    web
    war

    
        
            javax.servlet
            javax.servlet-api
            3.1.0
            provided
        
        
            io.predictech.ejb
            ejb
            0.1
            ejb-client
        
    

    
        
            
                src/main/resources
                true
            
        
        
            
                maven-war-plugin
                3.2.0
                
                    false
                
            
        
    

以上pom要注意的是添加的ejb的client依赖,指明类型是:ejb-client,而在web层的业务代码中,可以使用 @EJB@Resource的注解方式,或者手工new InitialContext(xx)来访问ejb。

开发ear,大致的pom如下



    
        hello-ejb
        io.predictech.ejb
        0.1
    
    4.0.0
    ear
    ear

    
        
            io.predictech.ejb
            ejb
            0.1
            ejb
        
        
            io.predictech.ejb
            web
            0.1
            war
        
    

    
        
            
                maven-ear-plugin
                3.0.0
                
                    lib/
                    true
                    
                        
                            io.predictech.ejb
                            ejb
                            ejb3.jar
                        
                        
                            io.predictech.ejb
                            web
                            web.war
                            /
                        
                    
                
            
        
    

以上pom需要注意的是:

  1. 添加的两个依赖一个是ejb,一个是war包,指明的类型分别是:ejbwar
  2. 使用了ear的打包插件:maven-ear-plugin
  3. 添加的ejb和war需要分别指明ejbModulewebModule,且可以通过bundleFileName定制名称

最后通过执行ear:ear就可以完成ear的打包工作