现在的位置: 首页 > 综合 > 正文

EJB3.0学习笔记—多接口的时,实现类处理方法:

2019年09月15日 ⁄ 综合 ⁄ 共 3411字 ⁄ 字号 评论关闭

EJB学习笔记---
1.胖客户端:指的是定义的接口太多了,接口做的工作太多;
胖接口:
2.EJB实现类型的定义,用注解的方式,当一个EJBbean,实现了多个接口的时候,

需要用注解的方式指明哪一个接口是用Remote方式访问,哪一个接口使用

local方式访问
3.实现多个接口的情况下定义,访问方式:
有三种:
a.第一种:在接口的实现类中:
@Remote(value={EJB04Interface01.class,EJB04Interface02.class})//

定义哪些接口使用remote方式访问
@Local(value={EJB04Interface03.class,EJB04Interface04.class})*/
public class Ejb04Bean implements

EJB04Interface01,EJB04Interface02
,EJB04Interface03,EJB04Interface04{
}
b.第二种:在接口的实现类中定义,简单的方式
@Remote({EJB04Interface01.class,EJB04Interface02.class})//定义

哪些接口使用remote方式访问
@Local({EJB04Interface03.class,EJB04Interface04.class})*/
/**
* 注意:
* 1.如果是remote,和local访问方式,且()中定义的只有value一个

属性的时候
* 可以使用这种简便的方法定义value属性;去掉value=
* 2.如果定义在了接口的前面,那么这个注解在这个地方就不用定义了
*/
--------------------------------------------------------------------

EJB学习例子:多接口的时实现类处理方法:
新建EJB项目:EJBTest_04
1.com.credream.ejb建包
2.编写接口:
EJB04Interface01.java

package com.credream.ejb;

import javax.ejb.Remote;

@Remote
public interface EJB04Interface01 {
public void m1();
}
----------------------------------------------------
EJB04Interface02.java

package com.credream.ejb;

import javax.ejb.Remote;

@Remote
public interface EJB04Interface02 {
public void m2();
}

-----------------------------------------------

EJB04Interface03.java
package com.credream.ejb;

import javax.ejb.Local;

@Local
public interface EJB04Interface03 {
public void m3();
}
------------------------------------------------

EJB04Interface04.java
package com.credream.ejb;

import javax.ejb.Local;

@Local
public interface EJB04Interface04 {
public void m4();
}
--------------------------------------------------------------
3.编写接口的实现类:
Ejb04Bean.java
package com.credream.ejb;

import javax.ejb.Local;
import javax.ejb.Remote;
import javax.ejb.Stateless;

@Stateless(name="ejb04beanname")
/*@Remote({EJB04Interface01.class,EJB04Interface02.class})//定义哪些

接口使用remote方式访问
@Local({EJB04Interface03.class,EJB04Interface04.class})*/
/**
* 注意:
* 1.如果是remote,和local访问方式,且()中定义的只有value一个属性的

时候
* 可以使用这种简便的方法定义value属性;去掉value=
* 2.如果定义在了接口的前面,那么这个注解在这个地方就不用定义了
*/
/*@Remote(value={EJB04Interface01.class,EJB04Interface02.class})//定

义哪些接口使用remote方式访问
@Local(value={EJB04Interface03.class,EJB04Interface04.class})*/
public class Ejb04Bean implements EJB04Interface01,EJB04Interface02
,EJB04Interface03,EJB04Interface04{

public void m1() {
System.out.println("m1方法被调用了!!!");

}

public void m2() {
System.out.println("m2方法被调用了!!!");

}

public void m3() {
System.out.println("m3方法被调用了!!!");

}

public void m4() {
System.out.println("m4方法被调用了!!!");

}

}
-----------------------------------------------------------------
4.编写远程客户端:EJBTest04_client
a.com.credream.ejb
5.编写客户端代码:EJB04BeanClient.java
package com.credream.ejb;

import javax.naming.InitialContext;

public class EJB04BeanClient {

/**
* @param args
*/
public static void main(String[] args) throws Exception{
InitialContext context=new InitialContext();
/*EJB04Interface01 ejb04Interface01=

(EJB04Interface01) context.lookup("ejb04beanname/remote");
ejb04Interface01.m1();
EJB04Interface02 ejb04Interface02=(EJB04Interface02)

context.lookup("ejb04beanname/remote");
ejb04Interface02.m2();*/
//没有把EJB04Interface03定义成local访问
EJB04Interface03 ejb04Interface03=(EJB04Interface03)

context.lookup("ejb04beanname/remote");
ejb04Interface03.m3();
//注意:远程客户端是用不了local的
}
}
--------------------------------------------------------------
5.导入EJB的jar包,并且写入类路径中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
-----------------------------------------------------------

抱歉!评论已关闭.