经过几天的摸索终于对EJB 3.0 Session Bean JNDI名称设置有点头绪了:
下面来总结一下我这几天的摸索和大家分享一下:
如何设置EJB 3.0 Session Bean JNDI名称呢?就以最简单的Hello World为例来说:
方法一:
@Stateless(mappedName="****")
public class HelloBean implements HelloRemote, HelloLocal {
public String sayRemoteHello(String name) {
return "Remote "+name;
}
public String sayLocalHello(String name) {
return "Local "+name;
}
}
其中” ****”就是你要设置的JNDI名称
方法二:
通过ejb-jar.xml配置文件来配置,ejb-jar.xml的位置:用Netbeans将它放到配置文件下面即可。注意:ejb-jar.xml不会自动生成,要自己编写。
ejb-jar.xml
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
metadata-complete="true"
version="3.0"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd">
<enterprise-beans>
<session>
<display-name>Hello</display-name>
<ejb-name>HelloBean</ejb-name>
<mapped-name>****</mapped-name>
<business-remote>hello.HelloRemote</business-remote>
<ejb-class>hello.HelloBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
<security-identity>
<use-caller-identity/>
</security-identity>
</session>
</enterprise-beans>
</ejb-jar>
红色部分的“****“就是你要设置的JNDI名称
调用方法:
InitialContext ctx = new InitialContext();
HelloRemote hello = (HelloRemote) ctx.lookup("JNDI名称");
比如设置Session Bean的JNDI名称为LOVEYOU
则调用方法为
InitialContext ctx = new InitialContext();
HelloRemote hello = (HelloRemote) ctx.lookup("LOVEYOU");
就可以了