2.一个EJB的小Demo

新建一个java普通项目即可

 

这里用到了Jboss,需要安装Jboss,然后进入jboss-4.2.3.GA\client目录,拷贝所有的jar包到本项目的lib下。

3个接口分别如下所示:

public interface Calculate {
    //计算器接口,有个加法
    public String add(Double a,Double b);

}
public interface CalculateLocal extends Calculate {
          //此接口用于实现本地化,继承父类
}
public interface Other {
        //另一个接口  
    public String hello();
    
}

下面是两个实现类:

//此类为无状态的本地和远程的bean

@Stateless
@Remote(Calculate.class)
@Local(CalculateLocal.class)
public class CalculateImpl implements Calculate,CalculateLocal{

    /*使用其他的EJB
     * 方式一,通过注解注入
     * beanName指明要注入的是哪个ejb
     * 如果有两个类都实现了这个接口,必须要指明注入的是哪个类
     * 只有一个的话,可以不指明
     * */
    @EJB(beanName="OtherImpl")
    Other other;
    /**
     * @Resource
     * 注入资源
     * */
    //@Resource TimeService t;
    //@Resource(mappedName="java:jndi的名字") DataSource da;
    
    
    @Override
    public String add(Double a, Double b) {
        /*
         * 方式二,通过jndi查找
         * 
        Properties props = new Properties();
        //设置jndi连接属性(jboss)
        props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
        //服务器的url(jboss)
        props.setProperty("java.naming.provider.url", "127.0.0.1:1099");
        try{
            InitialContext ctx = new InitialContext(props);
            Other other = (Other)ctx.lookup("OtherImpl/remote");//本地调用:CalculateImpl/local
            other.hello();
        }catch(Exception e){
            
        }
        */
        
        return "结果:"+a+b+other.hello();
    }

}
@Stateless
@Remote(Other.class)
public class OtherImpl implements Other{

    @Override
    public String hello() {
        System.out.println("hello...");
        return "hello";
    }

}

以上,服务端bean就开发好了,现在进行打包发布

右键项目-->Export-->java JAR file-->next

我们就看到了导出的jar包

任何将这个jar包放到jboss-4.2.3.GA\server\default\deploy目录下,启动jboss就可以了

 

下面是客户端开发

那3个接口还是要的,实现类就可以不要了,因为我们是通过远程访问服务器端的bean

public class Main {
    public static void main(String[] args) {
        Properties props = new Properties();
        //设置jndi连接属性(jboss)
        props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
        //服务器的url(jboss)
        props.setProperty("java.naming.provider.url", "127.0.0.1:1099");//本地IP
        try{
            InitialContext ctx = new InitialContext(props);
            //jndi查找 远程
            Calculate calculate = (Calculate)ctx.lookup("CalculateImpl/remote");//本地调用是:CalculateImpl/local
            System.out.println(calculate.add(12D, 45D));//调用
        }catch(Exception e){
            System.out.println(e.getMessage());
        }
    }
}

这样,一个简单的分布式应用就部署执行成功了

 

转载于:https://www.cnblogs.com/wwzyy/p/5655642.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值