【EJB一】第一个实例

来源:互联网 发布:开淘宝小技巧 编辑:程序博客网 时间:2024/05/05 22:02

EJB是什么

EJB是sun的JavaEE服务器端组件模型,设计目标与核心应用是部署分布式应用程序。简单来说就是把已经编写好的程序(即:类)打包放在服务器上执行。凭借java跨平台的优势,用EJB技术部署的分布式系统可以不限于特定的平台。简单的说,它提供的服务可以供其他程序远程调用。

EJB环境搭建

1、JDK支持2、JBoss服务器安装和部署(支持EJB,tomcate不支持EJB)

第一个实例

1、创建一个EJB Project(ejb01)2、创建一个接口(可供其他程序远程调用)
package com.bjsxt.ejb;public interface FirstEjb {    public String saySomething(String name);}
添加实现类:
package com.bjsxt.ejb;import javax.ejb.Remote;import javax.ejb.Stateless;@Stateless@Remotepublic class FirstEjbBean implements FirstEjb {    public String saySomething(String name) {        return "你好!"+name;    }}
到此为止,EJB程序代码已经编写完毕。看起来他和我们平常写的代码并无多大的区别,唯一的区别是,他用注解来标明实现类是@Remote和@Stateless。3、创建一个普通的Java Project(ejb01_client)来调用写好的EJB接口。当然,要想调用EJB接口,必须要引入接口的jar包,所以,我们将接口导出为jar文件,在ejb01_client中引入即可。

这里写图片描述

这里写图片描述

编写调用接口的类代码:
public class ejbClient {    /**     * @param args     * @throws NamingException      */    public static void main(String[] args) throws NamingException {        InitialContext context=new InitialContext();        FirstEjb firstEjb=(FirstEjb)context.lookup("FirstEjbBean/remote");        String string=firstEjb.saySomething("张三");        System.out.print(string);    }}
此外,在调用接口时,用到了JNDI来根据名称进行查找实现类。所以必须提供JNDI的一个来源,来classpath下面创建jndi.properties文件
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactoryjava.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfacesjava.naming.provider.url=localhost
当然,不止使用属性文件这一种方式来获取JNDI的上下文工厂。还可以通过代码创建property的方式或者hashTable等的方式来进行。

方式一:

Properties props= new Properties();props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");props.setProperty("java.naming.provider.url", "jnp://部署ejb的服务器ip");props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");InitialContext ctx = new InitialContext(props);FirstEjb firstEjb=(FirstEjb)ctx .lookup("FirstEjbBean/remote");

方式二:

private static InitialContext context;If(context==null){Hashtable  props = new Hashtable();props.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");props.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");props.put(Context.PROVIDER_URL,"jnp://部署ejb的服务器ip");context=new InitialContext(props);}FirstEjb firstEjb=(FirstEjb)ctx .lookup("FirstEjbBean/remote");
最后需要将ejb01部署到Jboss上面,我们就可以运行ejb01_client进行测试了。当然如果你在测试过程中,提示找不到jndi的上下文工厂类时,可以尝试引入jbossall-client.jar的包来解决。
0 0
原创粉丝点击