EJB工程(CRUD)

         刚完成了一个完整的EJB工程,总结一下整个流程。

         1.新建一个EJB工程,利用MyEcplise的方向工程生成对应的Entity Bean和Session Bean。

                   a.Entity Bean 采用标记技术实现数据库表和实体类的映射。

                   b.Session Bean (state和Stateless)中实现对数据库操作用到Hibernate的操作。

         2.其中有要求配置数据源,修改Jboss提供的模板,然后将得到的文件×××—ds.xml放到deploy目录下。

         3.将EJB工程直接发布到JBOSS服务器中(或者导出一个.jar文件,放到服务器的deploy目录下),这样就发布了一个EJB应用。

         4.测试调用自己写的EJB工程。

                   a.可以在同样的工程中新建一个测试单元Junit test case。以本工程为例新建一个UserFacadeRemoteTest类对UserFacade类中的各种方法进行调用。

                      发现不能运行,加入client端运行EJB需要的包后正常工作。(如果工程可以部署到Jboss中,则不用添加Client端包的引用,如果没有部署则要添加)

                   b.可以新建一个Web工程,对发布的EJB工程进行调用。如果部署到Tomcat服务器,则要修改Tomcat服务器默认的端口号(不能和Jboss默认的端口

                       号冲突),需要导入必要的Client端包。如果是发布到同一个Jboss服务器中,则不要添加Client端的包引用。

                      对于a和b的两种测试方法,都要添加EJB工程的引用,并在用到的地方导入对于的类。

                      如果添加jndi.properties文件

                      java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
                      java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
                      java.naming.provider.url=jnp\://localhost\:1099

                     在调用EJB发布的类时,代码如下:try{
                                                                            InitialContext ic = new InitialContext();
                                                                           usr = (UserFacadeRemote) ic.lookup("UserFacade/remote");
                                                                           }catch(NamingException e){
                                                                                      e.printStackTrace();
                                                                           }

                      在创建InitialContext对象的时候,其构造函数会自动查找jndi.properties文件,并将参数传入。

                      如果没有jndi.properties文件,则要用如下的代码调用EB发布的类:

                          Properties props = new Properties();   

props.setProperty("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");   

props.setProperty("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");   

props.setProperty("java.naming.provider.url","jnp://localhost:1099");   

InitialContext ic = null;

try { 

ic = new InitialContext(props);
//如果是同一个jboss容器,可以使用Hello/local远程接口
//如果是不同一个jboss容器,只能使用Hello/remote远程接口

HelloRemote hw = (HelloRemote) ic.lookup("Hello/remote");

out.print(hw.ejbSayHello("abao"));

} catch (NamingException e) {

e.printStackTrace();

}

     5.再有就是在配置Servlet的时候

          <url-pattern>/Servlet.do</url-pattern>注意那道斜杠,不然会报很多的错误。

    6.共享这个EJB工程。













         

                      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值