• ejb+jboss入门示例


    1、下载jboss:http://www.jboss.org/jbossas/downloads/
         本项目的jboss版本是:6.1.0.Final   jboss-as-distribution-6.1.0.Final.zip

    2、配置jboss环境变量:JBOSS_HOME= E:webServerjboss-as-distribution-6.1.0.Final

                                    path添加jboss路径:;%JBOSS_HOME%in

         在E:webServerjboss-as-distribution-6.1.0.Finalin目录下,点run.bat,或者在cmd中输入run,如果不出现异常,说明配置成功。

    3、Myeclipse安装jboss,  选择 jboss-home-directory  的路径: E:webServerjboss-as-distribution-6.1.0.Final ,这里注意不能带bin目录

         找到JBOSS  的 Paths  :   appendto classpath  --  ADD DIR 添加jboss的bin目录:E:webServerjboss-as-distribution-6.1.0.Finalin

         (另:其改jboss端口 在D:jboss-4.2.3.GAserverdefaultdeployjboss-web.deployerserver.xml中将8080改为其它)

        4、创建一个EJB服务端项目:ejbdemo , 导入ejb注解所需要的包:jboss-ejb3-ext-api.jar 和 jboss-ejb3-ext-api-impl.jar

    写一个接口MyEjb和实现类MyEjbImpl,如下:

    MyEjb.java:

    package demo.myejb.service;
    
    public interface MyEjb {
        
        public String hello();
    
    }
     MyEjbImpl.java:
    package demo.myejb.service.impl;
    
    
    import javax.ejb.Remote;
    import javax.ejb.Stateless;
    
    import org.jboss.ejb3.annotation.RemoteBinding;
    
    import demo.myejb.service.MyEjb;
    
    @Stateless   //无状态会话bean
    @Remote({MyEjb.class})  //指定远程调用 的接口类  该注解在javaee.jar中
    ////@Local({MyEjb2.class}) // 指定本地调用 的接口类 , 两个项目需在一个VM上方可调用 @RemoteBinding(jndiBinding="helloRemote") //给jndi取别名,本类的jndi默认名称是:MyEjbImpl/remote , 该注解在jboss-ejb3-ext-api.jar中
    ////@LocalBinding(jndiBinding="hello2Local") //给jndi取别名,默认是:MyEjbImpl/local
    public class MyEjbImpl implements MyEjb { public String hello() { System.out.println("ejb demo print .... "); return "ejb demo!"; } }

    5、将ejbdemo服务端项目中的接口类MyEjb.java打包 :  myejb.jar , 客户端调用接口时会用到该包

    6、创建客户端项目:ejbclient

    7、在src目录下创建jndi.properties文件,内容如下:

    # DO NOT EDIT THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING
    
    ###new factory name远程实例化工厂的名字
    java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
    
    ##remote package path远程调用类的包路径
    
    java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
    
    ###remote class server path调用类的服务器路径
    
    ##localhost:8080 is not run  , must locahost
    java.naming.provider.url=localhost

    8、将E:webServerjboss-as-distribution-6.1.0.Finalclient目录下的jar全部导入进来,且把刚才打包的接口:myejb.jar导入进来

    9、编写main测试调用接口:

    package ejb.test;
    
    import java.util.HashMap;
    import java.util.Hashtable;
    import java.util.Map;
    
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    
    import demo.myejb.service.MyEjb;
    
    
    
    public class EjbClient {
        public static void main(String[] args) {        
            try {
                
                Hashtable map = new Hashtable();
                map.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
                map.put("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");
                map.put("java.naming.provider.url", "localhost");
                
                //相当于beanfactory 实例化封装的类
                InitialContext ic = new InitialContext(map);
                
                /**
                 * 实例InitialContext有两种方式
                 * 1、将属性值放到Hashtable中,传进去new InitialContext(map);
                 * 2、在src下创建jndi.properties文件,将属性保存在Propertis文件中 ,直接 new InitialContext();即可
                 */
                
                //得到远程的MyEjbImpl类,MyEjbImp/remote是服务器中MyEjb和MyEjbImpl的发布的Jndi名称
    //            MyEjb tg =(MyEjb) ic.lookup("MyEjbImpl/remote");
                MyEjb client =(MyEjb) ic.lookup("helloRemote");
                String ss = client.hello() ; //远程调用EJB服务端的方法
                
                System.out.println("====="+ss);
                
            } catch (NamingException e) {
                e.printStackTrace();
            }
            
            
        }
    
    }

    10、运行main方法,会输出:==ejb demo

  • 相关阅读:
    【Node.js 自己封装的库 http_parse, libuv】
    select遍历list默认选中初始值
    mybatis入门基础----高级映射(一对一,一对多,多对多)
    工具类 | window批处理杀死指定端口进程
    eclipse 关闭控制台 自动弹出
    mybatis的jdbcType和javaType、oracle,MySQL的对应类型
    mysql 创建表格 AUTO_INCREMENT
    Linux shell脚本启动 停止 重启jar包
    Tomcat结合nginx使用小结
    集成maven和Spring boot的profile功能
  • 原文地址:https://www.cnblogs.com/summer520/p/3175214.html
Copyright © 2020-2023  润新知