欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

Intellij IDEA 新建一个EJB工程(三)

发布时间:2023/12/15 45 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Intellij IDEA 新建一个EJB工程(三) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

之前都是用IDEA启动JBoss服务器,并在启动的同时将EJB项目部署上去。在构建 artifacts 时遇到很多问题,明明是EJB项目却不能用EJB导出,真是奇怪~~

后来用Web Application :Exploded可以正常导出了,但是在导出的名字后面竟然要加上.war,这是奇了怪了~~ 现在想在第一次用IDEA运行EJB项目的时候,并生成一个war文件,这个war文件就可以部署在任意的Jboss服务器上了,不用每次只能部署一个项目。不知道我的做法有没有问题,但是实验证明是可行的~特此记录~~ 1、新建一个EJB Module,名字为EJBModuleTest01 生成EJB Module可以参考:

http://www.cnblogs.com/yangyquin/p/5328344.html

1)接口HelloRemote:    package com.ejb; import javax.ejb.Remote; @Remote public interface HelloRemote {public String sayHello(String world); }

 2)无状态会话Bean,HelloBean:

package com.ejb; import javax.ejb.Stateless; @Stateless(name = "HelloEJB") public class HelloBean implements HelloRemote {public HelloBean() {System.out.println("EJBModuleTest01-HelloBean");}@Overridepublic String sayHello(String world) {return "EJBModuleTest01-sayHello():" + "world";} }

3)EJBTestModule01的结构图为:

4)配置lib文件路径: Ctrl+Alt+Shift 弹出Project Structure -> 选择Module -> 选择EJBModuleTest01 -> 点击右边的加号 -> 选择Jar or Directories -> 选择新建的Module的lib文件夹 -> 确定后提勾再确定即可。

5)然后选择Artifacts -> 选择“EJBModuleTest01:war exploded” -> 发现出错信息,点击“Fix” -> 选择“Add ......” 即可。

 

6)同一页面,修改Name,Type和Output directory为如下: Name中去掉exploded及其前面的一个空格,Type选择为Web Application:Archive,    选择Apply然后再点close即可。

 

7)配置运行环境: 选择菜单栏Run -> Edit Configurations  点击“+” -> 选择JBoss Server -> Local -> 输入名称“ejbmoduletest01” -> 点击“Deployment” -> 点击右边的“+” 号 -> 选择EJBModuleTest01:war ,确定即可 8)运行 运行成功~~

 

JBoss后台管理界面:

 

2、以同样的方式在同一个Project下新建一个Module,为EJBModuleTest02 1)Rmote接口: package com.ejb; import javax.ejb.Remote; @Remote public interface HiRemote {public String sayHi(String world); }

 2)无状态会话Bean,HiBean:

package com.ejb; import javax.ejb.Stateless; @Stateless(name = "HiEJB") public class HiBean implements HiRemote {public HiBean() {System.out.println("EJBModuleTest02-HiBean");}@Overridepublic String sayHi(String world) {return "EJBModuleTest02-sayHi()" + world;} }

3)EJBModuleTest02结构图:

4)Ctrl+Alt+Shift 弹出项目结构配置对话框,对于本Module的lib,你可以选择将刚刚的Module的lib文件夹导入,也可以在Project中将刚刚的lib文件夹导入。 选择 Artifacts,选择“EJBModuleTest02:war exploded”,跟刚刚的修改一样,将Name中的exploded及其前面的一个空格去掉,Type选择“Web Application:Archive’,选择Apply然后再点close即可。

 

5)配置运行环境,如下图所示: 选择刚刚新建的EJBModuleTest02:war 6)运行: 注意这时是重新启动JBoss。 运行成功~~ JBoss后台管理界面: 3、分别建立的两个Module都能正常运行,也成功的生成了两个war文件。

 

 

1)关掉IDEA启动的JBoss,在JBoss安装目录下启动,找到文件:C:\jboss-as-7.1.1.Final\bin\standalone.bat,双击启动JBoss。 启动成功: 2)将生成的两个war文件复制到JBoss安装目录的这个文件夹:C:\jboss-as-7.1.1.Final\standalone\deployments。 JBoss会自动检测war文件,并生成对应的后缀为deployed的文件 3)部署成功~

 4)查看JBoss后台管理界面:

4、在本地新建测试类就可以调用这两个Module的方法了。 测试类可以参考:http://www.cnblogs.com/yangyquin/p/5328344.html 1)测试Module结构:

2)配置文件jboss-ejb-client.properties:

endpoint.name=client-endpoint remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false remote.connections=default remote.connection.default.host=localhost remote.connection.default.port = 4447 remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false remote.connection.default.username=yang remote.connection.default.password=123456

3)HelloRemote接口:

package com.ejb; import javax.ejb.Remote; @Remote public interface HelloRemote {public String sayHello(String world); }

4)Hi接口:

package com.ejb; import javax.ejb.Remote; @Remote public interface HiRemote {public String sayHi(String world); }

5)测试类:

import com.ejb.HelloRemote; import com.ejb.HiRemote; import org.junit.Before; import org.junit.Test; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import java.util.Hashtable; /*** Created by gao on 16-3-31.*/ public class HelloAndHiClient {final String appName = "";final String moduleName01 = "EJBModuleTest01_war";final String moduleName02 = "EJBModuleTest02_war";final String distinctName = "";final String beanName01 = "HelloEJB";final String beanName02 = "HiEJB";String viewClassName = null;String namespace = null;Hashtable jndiProperties = null;Context context = null;@Beforepublic void before() throws NamingException {jndiProperties = new Hashtable();jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");context = new InitialContext(jndiProperties);}@Testpublic void testHelloRemote() throws NamingException {viewClassName = HelloRemote.class.getName();namespace = "ejb:" + appName + "/" + moduleName01+ "/" + distinctName + "/" + beanName01 + "!" + viewClassName;System.out.println("namespace01:" + namespace);HelloRemote hello = (HelloRemote) context.lookup(namespace);System.out.println("HelloRemote:" + hello);System.out.println(hello.sayHello("EJBModuleTest01_war"));}@Testpublic void testHiRemote() throws NamingException {viewClassName = HiRemote.class.getName();namespace = "ejb:" + appName + "/" + moduleName02+ "/" + distinctName + "/" + beanName02 + "!" + viewClassName;System.out.println("namespace02:" + namespace);HiRemote hi = (HiRemote) context.lookup(namespace);System.out.println("HiRemote:" + hi);System.out.println(hi.sayHi("EJBModuleTest02_war"));} }

6)运行第二个测试函数的输出结果:

 

 搞掂~~~~

 

 

转载于:https://www.cnblogs.com/yangyquin/p/5341729.html

总结

以上是生活随笔为你收集整理的Intellij IDEA 新建一个EJB工程(三)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。