JBoss7.1的JNDI使用--EJB
来源:互联网 发布:哪个论坛源码好 编辑:程序博客网 时间:2024/05/21 07:46
JBoss7版本与之前的的版本的JNDI使用方式不同,之前的在EJB客户端中:
在src路径下jndi.propertis的属性文件:
Java.naming.factory.initial=org.jnp.interfaces.NamingContextFactoryjava.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfacesjava.naming.provider.url=localhost:1099
这样在容器初始化时回找到这个文件并建立与远程服务器的链接
但是JBoss7版本的JNDI设置方式不同,根据官方文档:
For stateless beans:
ejb:<app-name>/<module-name>/<distinct-name>/<bean-name>!<fully-qualified-classname-of-the-remote-interface>
For stateful beans:
ejb:<app-name>/<module-name>/<distinct-name>/<bean-name>!<fully-qualified-classname-of-the-remote-interface>
这可能有些人还是看不懂,那么贴上一个简单的例子EJB:(简化说明)
首先我编写一个无状态的远程的会话bean,并打包好发布在JBoss的单线程启动对应的文件夹中,如图
接下来编写EJB的客户端:
package cn.mym.test;import java.util.Properties;import javax.naming.Context;import javax.naming.InitialContext;import javax.naming.NamingException;import cn.mym.first.HelloWorld;public class EJBClient {/** *<p>title:main</p> *@author 明柯 * @param args * @throws NamingException */public static void main(String[] args){Properties props=new Properties(); props.setProperty(Context.URL_PKG_PREFIXES,"org.jboss.ejb.client.naming"); try { Context context=new InitialContext(props); final String appName = "";//这是应用名,即打包的后缀是.ear ,如果不是发布的这个类型,为空 final String moduleName = "HelloWorld";//发布在JBoss中的为.jar的包名 final String distinctName = "";//JBoss as7允许每个部署有一个不同的名称(别名吧,可选),这里我没有设置 final String beanName = "HelloWorldBean";//无状态会话bean接口的一个实现类 final String viewClassName = HelloWorld.class.getName();//无状态会话bean接口的全路径:cn.mym.first.HelloWorld //最后拼接成lookup函数可识别的JNDI:"ejb:appName/moduleName/distinctName/beanName!viewClassName"; String jndi = "ejb:" + appName + "/" + moduleName + "/" + distinctName + "/" + beanName + "!" + viewClassName; HelloWorld hello=(HelloWorld)context.lookup(jndi); System.out.println(hello.sayHello("dara")); } catch(NamingException e) { e.printStackTrace(); } }}运行后:
2017-5-3 14:15:38 org.jboss.ejb.client.EJBClient <clinit>INFO: JBoss EJB Client version 1.0.5.Final2017-5-3 14:15:38 org.xnio.Xnio <clinit>INFO: XNIO Version 3.0.3.GA2017-5-3 14:15:38 org.xnio.nio.NioXnio <clinit>INFO: XNIO NIO Implementation Version 3.0.3.GA2017-5-3 14:15:38 org.jboss.remoting3.EndpointImpl <clinit>INFO: JBoss Remoting version 3.2.3.GA2017-5-3 14:15:38 org.jboss.ejb.client.remoting.VersionReceiver handleMessageINFO: Received server version 1 and marshalling strategies [river]2017-5-3 14:15:38 org.jboss.ejb.client.remoting.RemotingConnectionEJBReceiver associateINFO: Successful version handshake completed for receiver context EJBReceiverContext{clientContext=org.jboss.ejb.client.EJBClientContext@16ba5c7a, receiver=Remoting connection EJB receiver [connection=Remoting connection <691e0c13>,channel=jboss.ejb,nodename=desktop-6pbcqpv]} on channel Channel ID 85ee6d5f (outbound) of Remoting connection 69b1fbf4 to /127.0.0.1:44472017-5-3 14:15:38 org.jboss.ejb.client.remoting.ChannelAssociation$ResponseReceiver handleMessageWARN: Unsupported message received with header 0xffffffffdara说:你好,世界
注:有状态的会话bean的JNDI链接:"ejb:appName/moduleName/distinctName/beanName!viewClassName?stateful "
解释说明:
1.首先要在客户端所在项目中的src或者是任意classpath路径下配置一个JBoss的配置文件
名:jboss-ejb-client.properties
内容:内容解释:http://blog.csdn.net/maoyuanming0806/article/details/71108376
或参考官方文档,官方文档下载:http://download.csdn.net/detail/maoyuanming0806/9831962
endpoint.name=client-endpointremote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=falseremote.connections=defaultremote.connection.default.host=10.20.30.40remote.connection.default.port = 4447remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=falseremote.connection.default.username=appuserremote.connection.default.password=apppassword
2.客户端中
Properties props=new Properties();
props.setProperty(Context.URL_PKG_PREFIXES,"org.jboss.ejb.client.naming");
Context context=new InitialContext(props);
首先是设置好上下文链接前缀,即设置好客户端与远程服务器的JNDI链接前缀,做好链接准备。然后根据设置的前缀读取配置文件建立连接
3.最后通过客户端上下文的对象的lookup方法找到远程服务器中的无状态会话bean类并实例化一个对象,最后可以调用该bean中的方法
注意与低版本JBoss的配置方式差异,否则不能建立连接
参考官方文档的浅显解释,详细说明请参考官方文档
- JBoss7.1的JNDI使用--EJB
- jboss7 jndi使用
- JBoss7 创建客户端通过JNDI调用EJB
- 使用eclipse通过jboss开发简单的ejb应用(jboss7.x & ejb3.x)
- 使用EJB使用jboss7.0中配置数据源
- 使用EJB使用jboss7.0中配置数据源
- jboss7.1.1配置jndi
- MyEclipse10+JBoss7.1.1Final配置Oracle的JNDI
- EJB---->改变sessionbean的JNDI名称
- EJB的jndi默认命名规则
- jndi(是什么)和ejb容器的关系
- 【EJB系列】(一)——JBOSS7中开发一个简单的EJB应用
- 【EJB系列】(二)——JBOSS7中EJB的远程调用和本地调用
- JBoss7配置EJB客户端出错:No EJB receiver available for handling的解决
- JBoss AS 7.1.1下,从远程客户端使用JNDI调用EJB
- EJB中JNDI的逻辑名的使用及部署_{EJB之无状态会话Bean简单应用-学习与实践}续(inber原作)
- EJB学习笔记(JNDI)
- 关于JNDI and EJB
- Oracle 查找、删除重复数据
- Android Studio多渠道批量打包及代码混淆
- 装饰模式(Decorator)
- TCP/IP学习笔记
- python 读取中文路径
- JBoss7.1的JNDI使用--EJB
- 周志华教授gcForest(多粒度级联森林)算法预测股指期货涨跌
- 拦截
- Tensorflow安装与测试
- php三元运算符
- springmvc常用注解标签详解
- Opencv2.4.9源码分析——HoughCircles
- JDBC简介
- Pdf控件