JBOSS 6,7调用通过JNDI查找EJB的方法和JBOSS5不一样。
JBOSS 5
Properties props = new Properties();
props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory"); //jndi factory
props.setProperty("java.naming.provider.url", "localhost:1099"); //jndi server url
props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming"); //jndi finding package
InitialContext ctx = new InitialContext (props);
DBBeanRemote db = (DBBeanRemote) ctx.lookup("DBBean/remote");
JBOSS 6,7
官方文档https://docs.jboss.org/author/display/AS71/EJB+invocations+from+a+remote+client+using+JNDI
总结:
1. 查找JNDI
final Hashtable jndiProperties = new Hashtable();
jndiProperties.put(Context.URL_PKG_PREFIXES,
"org.jboss.ejb.client.naming");//让JNDI API知道是由谁来管理我们用来查找JNDI 名字的命名空间的。
final Context context = new InitialContext(jndiProperties);
//appName 和 moduleName分别就打包的格式而定
//如果是.ear就是appName,其它的是moduleName(.jar,.war)
final String appName = "";
final String moduleName = "EJBDBTest";
final String distinctName = "";
//实现类名
final String beanName = DB.class.getSimpleName();
System.out.println(beanName);
//接口类名
final String viewClassName = DBRemote.class.getName();
System.out.println(viewClassName);
String jndi = "ejb:" + appName + "/" + moduleName + "/"
+ distinctName + "/" + beanName + "!" + viewClassName;
System.out.println(jndi);
DBRemote db = (DBRemote) context.lookup(jndi);
In AS7, for remote access to EJBs, you use the ejb: namespace with the following syntax:
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>?stateful
2.加入JAR文件
把jboss-client jar加入到项目,在 JBOSS_HOME/bin/client/jboss-client-7.1.0.Final.jar 目录下.
3. 创建客户端调环境(告诉客户端应该去哪里,怎么调server的EJB)
在project path 下创建 jboss-ejb-client.properties
endpoint.name=client-endpoint
remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
remote.connections=default //connection 的名字
remote.connection.default.host=xx.xxx.xxx.xx //IP
remote.connection.default.port = xxxx //port
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
//JBOSS 用户名密码
remote.connection.default.username=appuser
remote.connection.default.password=apppassword
或者你可以另外命名这个文件的名字,只要加入系统参数里就好,如下
-Djboss.ejb.client.properties.file.path=/home/me/my-client/custom-jboss-ejb-client.properties
你还可以建立不同的连接
remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
remote.connections=one, two
remote.connection.one.host=localhost
remote.connection.one.port=6999
remote.connection.one.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
remote.connection.two.host=localhost
remote.connection.two.port=7999
remote.connection.two.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
分享到:
相关推荐
EJB对像,而采用了一个迂回的方法,更专业的说是一种设计模式――代理模式,真正与客户端交互的是一个代理对像①,这 个代理对像一般由客户端通过JNDI技术来取得的。而具体的代理对像的实现就由各厂商自完成了,在...
第二部分详细讲解了jsf ri、jta、jndi、rmi、jms、javamail、ejb 3的session bean、message driven bean、jpa、jax-ws 2、jaas等java ee知识,这部分知识以jsf+ejb 3+jpa整合开发为重点,通过使用netbeans ide工具...
Java EJB自定义错误信息的例子,提示信息本地化的一个测试,这个代码触发调用一个状态Bean中的方法,定义了CountBean接口,调用了每一个EJB对象的count(),保证Bean正常... jboss默认jndi名为ejb-jar.xml中的:ejb-name
第一部分 集群原理 3 1. WEB Loadbalance 3 ...3. JNDI 3 4. EJB 3 第二部分 集群物理实现 4 1. 物理架构 4 ...5.3. client调用ejb方法 8 6. EJB 8 6.1. 配置jboss.xml 8 7. 自动分发 8 8. 特别说明 8
2.4 发布在JBOSS集成环境中的WEB应用调用EJB.....10 第三章开发前的准备............10 3.1 熟悉JBOSS的目录结构10 3.2 JBOSS中的部署............. 11 3.3 如何进行EJB打包....... 11 3.4 如何进行WEB应用打包........
2.4 发布在JBOSS集成环境中的WEB应用调用EJB.....10 第三章开发前的准备............10 3.1 熟悉JBOSS的目录结构10 3.2 JBOSS中的部署............. 11 3.3 如何进行EJB打包....... 11 3.4 如何进行WEB应用打包........
SessionBean: Stateless Session Bean 的生命周期是由容器决定的,当客户机发出请求要建立一个Bean的实例时,EJB容器不一定要创建一个新的Bean的实例供客户机调用,而是随便找一个现有的实例提供给客户机。...
EJB包括Session Bean、Entity Bean、Message Driven Bean,基于JNDI、RMI、JAT等技术实现。 SessionBean在J2EE应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他EJB组件。EntityBean被用来...
2.4 发布在JBOSS集成环境中的WEB应用调用EJB...............................................................................................10 第三章开发前的准备..............................................
5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...
5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...
9.6 通过Hibernate调用存储过程 9.7 小结 9.8 思考题 第10章 映射组成关系 10.1 建立精粒度对象模型 10.2 建立粗粒度关系数据模型 10.3 映射组成关系 10.3.1 区分值(Value)类型和实体(Entity)类型...
9.6 通过Hibernate调用存储过程 9.7 小结 9.8 思考题 第10章 映射组成关系 10.1 建立精粒度对象模型 10.2 建立粗粒度关系数据模型 10.3 映射组成关系 10.3.1 区分值(Value)类型和实体(Entity)类型...
9.6 通过Hibernate调用存储过程 9.7 小结 9.8 思考题 第10章 映射组成关系 10.1 建立精粒度对象模型 10.2 建立粗粒度关系数据模型 10.3 映射组成关系 10.3.1 区分值(Value)类型和实体(Entity)类型...
9.6 通过Hibernate调用存储过程 9.7 小结 9.8 思考题 第10章 映射组成关系 10.1 建立精粒度对象模型 10.2 建立粗粒度关系数据模型 10.3 映射组成关系 10.3.1 区分值(Value)类型和实体(Entity)类型...