① 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();
        }
    }
}

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

已标记关键词 清除标记
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符 “速评一下”
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页