Maven的EJB&JBoss的配置使用以及一键式部署
前言: 一直觉得EJB是一个很恶心的东西,不过仅限于耳闻,今天接触之后发现,EJB果然是一个很恶心的东西.
?
1、准备:为了完成主题中所提到的任务我们需要做如下准备:
? ? ? ? ? IntelliJ IDEA 11.1.1
? ? ? ? ? Maven 3.0.4
? ? ? ? ? JDK 1.6.0
? ? ? ? ? JBOSS 5.1.0 GA
关于安装以及环境配置请Google
?
2、新建项目和一键式部署
? ? ?打开IntelliJ中创建一个新的Project名字命名为(maven-ejb-spike),并在Project Structure,Modules中在maven-ejb-spike下增加一个 EJB 的module。
? ? ?在Deployment Descriptors中增加ejb-jar.xml, 在项目的根路径下将增加一个META-INF其中包括一个ejb-jar.xml。
? ? ?在src/main下新建一个resources目录,将整个META-INF文件夹移动到resources下
? ? ?打开pom.xml文件,并在其中增加以下配置:
?
???<groupId>maven-ejb-spike</groupId>
???<artifactId>maven-ejb-spike</artifactId>
???<version>1.0</version>
?
???<build>
???????<plugins>
???????????<plugin>
???????????????<groupId>org.apache.maven.plugins</groupId>
???????????????<artifactId>maven-ejb-plugin</artifactId>
???????????????<version>2.3</version>
???????????????<configuration>
???????????????????<ejbVersion>2.1</ejbVersion>
???????????????</configuration>
???????????</plugin>
?
???????????<plugin>
???????????????<groupId>org.codehaus.mojo</groupId>
???????????????<artifactId>jboss-maven-plugin</artifactId>
???????????????<version>1.5.0</version>
???????????????<configuration>
???????????????????<serverName>all</serverName>
???????????????????<fileName>target/maven-ejb-spike-1.0.jar</fileName>
???????????????</configuration>
???????????</plugin>
???????</plugins>
???</build>
?
? ? ?然后到项目路径下,执行:mvn clean install jboss:hard-undeploy jboss:hard-deploy jboss:start
? ? ?如果看到 Starting JBoss和BUILD SUCCESS的字样,就说明成功了。我们的EJB项目现在会被maven自动打包成jar包并发布到JBoss的deploy目录下。 我们可以接着进行下面的工作。
?
3、开始开发第一个Session
右键点击当前项目(也就是此时我们的EJB不做任何事情,但是是一个完整可以部署的EJB session了。
执行?mvn clean install jboss:hard-undeploy jboss:hard-deploy jboss:start 看是否依然能够部署成功。
?
确认成功信息之后在remote interface中增加一个方法例如helloEJB, 然后在session bean中实现。
?
4、测试在JBoss上的EJB Session
将JBoss下client目录中所有jar加入到当前项目中。
然后在测试用例中加入如下代码:
Hashtable environment = new Hashtable();
environment.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
environment.put(Context.URL_PKG_PREFIXES,"org.jboss.naming:org.jnp.interfaces");
environment.put(Context.PROVIDER_URL, "jnp://localhost:1099"); //remote machine IP
InitialContext context = new InitialContext(environment);
GasCostCalculator calculator = ((GasCostCalculatorHome)context.lookup("GasCostCalculatorEJB")).create();
assertThat(calculator.calculate(0), equalTo(0));
System.out.println("-->> lookup object successfully");
?
运行测试用例之前确保你的JBoss在执行中。
?
理论上。。。。测试用例应该通过。
?
?
?
?
?