ejb要打包成jar放在jboss7中的deployments中。
就版本是写jndi.propertis放在src目录下,然后容器初始化的时候会找这个文件,文件内容为
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=localhost:1099
但是jboss7就不一样了。
在一些帮助类,或者其他容器不管理的bean里,不能使用注解的方式时。
需要配置jndi,来调用ejb包的类,在standalone.xml配置
此方式配置简单,不用修改代码,但需要重启服务器才生效。
主要是配置,name可自定义简称,根据name能找到真正的jndi,然后返回对应的ejb实例。
若不需要更改原来项目中获取方式的代码,只需要把name改成对应的AdminEjb/local即可。
Lookup的值为实际jndi路径,命名规则如下:
JNDI: ejb:appName /moduleName/distinctName/beanName!viewClassName
appName:这里是.EAR包的名称,如果你打包成JAR发布的话,这里则留空
moduleName:表示模块名,也就是ejb包名,但不包括后缀.jar,如admin_ejb.jar。moduleName为admin_ejb
distinctName:如果没有定义其更详细的名称,则这里留空
beanName:这里为实现类的名称
viewClassName:为接口全路径名称
缺点:在standalone.xml绑定jndi的话,上线时运维人员需手动添加绑定,使用不方便。
方法二是在代码
之前接口代码中一般会把jndi以静态变量定义,如:adminIfc中的
public static final java.lang.Stringjndi = “AdminEjb/local”
现在只须把变量值更改为jndi = “ejb:/admin_ejb/AdminEjb!com.mipt.admin.ifc.AdminIfc”即可.
客户端我是在页面上写的。然后发布在Jboss7上,在打开浏览器看结果的。