开发服务端程序:
1.新建一个EJB project:EJBTest_01
2.在src下建包:com.credream.ejb
3.写接口:FirstEjb.java
package com.credream.ejb;
public interface FirstEjb {
/**
*1. EJB中需要一个接口
* @param name
* @return
*/
public String saySomething(String name);
}
4.写接口的实现类:FirstEjbBean.java
package com.credream.ejb;
import javax.ejb.Remote;
import javax.ejb.Stateless;
//3.添加配置
@Stateless
@Remote
//2.实现类
public class FirstEjbBean implements FirstEjb {
/**
* 注意在EJB中,通常是以...Bean表示实现类类
*/
public String saySomething(String name) {
return "hello"+name;
}
}
--------------------------------------------------------------------
开发客户端程序:
1.客户端是一个java项目,新建javaProject:EJBTest01_client
2.将服务器端的接口打包:方法:在FirstEjb上右键选择--export--java中的
jar--选择保存在EJBTest01_client目录下,并且命名为:EJBTest_01.jar
3.将这个jar包,加入到这个javaproject的类路径中;
4.这个接口就是在客户端和服务器端建立一个关系;
5.将JBOSS安装目录下的client目录里面的所有jar包,加入到客户端项目中
6.JNDI:JNDI(Java Naming and Directory Interface,Java命名和目录接口)
是一组在Java应用中访问命名和目录服务的API。命名服务将名称和对象联
系起来,使得我们可以用名称访问对象。目录服务是一种命名服务,在这种
服务里,对象不但有名称,还有属性。
----------------------------------------------------
7.编写客户端代码:
FirstEjbClient.java
package com.credream.ejb;
import javax.naming.InitialContext;
public class FirstEjbClient {
public static void main(String[] args) throws Exception{
InitialContext context=new InitialContext();
FirstEjb firstEjb=(FirstEjb) context.lookup("FirstEjbBean/remote");
String string=firstEjb.saySomething("张三");
System.out.println(string);
/**
调用服务端的接口的实现类FirstEjbBean
这项也可以在EJB启动的日志里得到:
23:20:01,637 INFO [EJBContainer] STARTED EJB:
com.credream.ejb.FirstEjbBean ejbName: FirstEjbBean
FirstEjbBean/remote:这里前面是接口实现类的名字,后面是调用方式;
*/
}
}
--------------------------------------------------------------
8.配置JNDI:
a.JNDI:就像一个工厂,可以找到具体的实现类在哪里;
b.在src类路径下建立:jndi.properties
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=localhost