① EJB无状态的bean(创建EJB的基础教程)

① EJB无状态的bean

1.定义

无状态会话bean是一种企业bean,它通常用来做独立操作。无状态会话Bean根据其名字没有任何关联的客户端的状态,但它可能会保留其实例的状态。就相当于我们spring中的单例对象,能够保存信息,服务于多个请求连接。

2.创建过程

2.1 创建服务端程序(EJBServer)

选择Java Enterprise,同时勾选(EJB),注意选择的jdk一定要是1.7.选择jboss服务器进行开发。
在这里插入图片描述
在这里插入图片描述

创建完成后,会自动在lib下面下载javax.ejb-api.jar,我们新建Hello World接口和HelloWorldBean实现类。
在这里插入图片描述

HelloWorldBean:

public interface HelloWorld {
    String sayHello(String name);
}

HelloWorldBean:

@Stateless(name = "HelloWorldBean")
@Remote
public class HelloWorldBean implements HelloWorld {
    @Override
    public String sayHello(String name) {
        System.out.println("吴涛涛最可爱!!!");
        return "hello"+name;
    }
}

Stateless:表示该bean为无状态的bean。后面的name就是暴露出去的名称。(默认为我们的方法名称)
配置Jboss服务器(注意是选择war包的方式进行打包,若是失败或者其他原因,可重新编译或者重启服务器):
在这里插入图片描述
启动服务器成功(下图所示是我们的访问字符串):
在这里插入图片描述

访问字符串(JNDI的命名规则):

"ejb:" + appName + "/" + moduleName + "/" + beanName + "!" + viewClassName;
部署文件的名字
final String appName = ""; (as:EJBServerStateFul_war_exploded)
访问模块的名字
final String moduleName = ""; (as:LibraryStatefulSessionBean)
接口类的全名
final String viewClassName = ""; (as:pers.jhl.session.stateless.LibraryStatefulSessionBeanRemote)
状态值(适用于有状态的情况,无状态可不选)
stateful = "xxx"

完整示例(有状态的情况之下)

ejb:/EJBServerStateFul_war_exploded/LibraryStatefulSessionBean!pers.jhl.session.stateless.LibraryStatefulSessionBeanRemote?stateful=TMingYi

2.2 创建客户端程序(EJBClient)

创建普通的java程序。把jbossxxx/bin/client中的jboss-client.jar加入该客户端的依赖之中。
在src目录下建立 jboss-ejb-client.properties 配置文件。
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=TMingYi
remote.connection.default.password=root

目录架构图如图所示。(HelloWorld接口就是server端的接口,在maven中我们可以直接依赖,在这里的官方的做法是吧接口文件打成jar然后放入client进行依赖,但是这里没得必要,我们只要在同一包目录下,建立这样一个Hello World接口,效果和打成jar的效果一样)。
在这里插入图片描述

编写主程序(HelloWorldClient):

import pers.jhl.session.stateless.HelloWorld;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import java.util.Properties;

public class HelloWorldClient {
    public static void main(String[] args) {
        try{
            Properties pro = new Properties();
            pro.put(Context.URL_PKG_PREFIXES,"org.jboss.ejb.client.naming");
            pro.put("jboss.naming.client.ejb.context",true);

            Context context = new InitialContext(pro);
            HelloWorld h = (HelloWorld) context.lookup("ejb:/EJBServer_war_exploded/HelloWorldBean!pers.jhl.session.stateless.HelloWorld");
            System.out.println( h.sayHello("Medlen"));
        }catch(NamingException e){
            e.printStackTrace();
        }
    }
}

在服务器运行的情况下,在运行此程序,即可看到打印:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吴涛_1618

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值