目录
- 概述
- 特性
- 示例演示
[一]、概述
JBoss IIOP可以支持CORBA/IIOP访问部署在JBoss应用服务器中EJB规范定义的企业Bean。下面的两张方法都是有效的:
- Java编写的RMI/IIOP客户端
- Java,C + +或其他语言实现的CORBA客户端
它使得JBoss实现CORBA服务功能易于使用,易于设置和开发人员友好。同时没有IDL编译器,不需要额外的步骤来生成Java的 skeletons and stubs… 一切都是自动化的,你只需要把EJB的jar包放在deploy目录下即可。
[二]、特性:
- 是由第三方IIOP引擎(JacORB)实现的,完全符号CORBA 2.3规范,而且改引擎是可插拔的。
- 在EJB发布时自动生成IIOP stubs
- JBoss IIOP包括CORBA命名服务是和JBoss 运行再同一个VM中,EJB Home就是用此命名服务注册的。
[三]、示例演示
要指定EJB支持IIOP调用,你改变默认的配置。以下配置可用于的IIOP调用程序:
- Standard CMP 2.x EntityBean
- Standard CMP EntityBean
- Standard Stateless SessionBean
- Standard Stateful SessionBean
- Standard BMP EntityBean
【1】创建一个EJB 工程
详细过程参考 :创建第一个EJB2.0项目(http://www.micmiu.com/j2ee/ejb/ejb2-jboss-demo/)
【2】配置 jboss.xml
ejbModule/META-INF/jboss.xml (如果没有该文件创建新的即可)修改成如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?xml version="1.0" encoding="UTF-8"?> <jboss> <enterprise-beans> <session> <ejb-name>helloWorldEJB</ejb-name> <jndi-name>demo-jndi/hello</jndi-name> <configuration-name>Standard Stateless SessionBean </configuration-name> <invoker-bindings> <invoker> <invoker-proxy-binding-name>iiop</invoker-proxy-binding-name> </invoker> </invoker-bindings> </session> </enterprise-beans> </jboss> |
ps:<invoker-proxy-binding-name>iiop</invoker-proxy-binding-name>这个配置不能少。
【3】发布
导出EJB项目,放在 %JBOSS_HOME%/server/all/deploy 目录下,以 all 模式启动jboss服务:
1 |
bin/run.sh -c all |
【4】客户端测试:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
package com.micmiu.ejb2x; import java.util.Properties; import javax.naming.InitialContext; import javax.rmi.PortableRemoteObject; /** * IIOP client调用 EJB * * @author <a href="http://www.micmiu.com">Michael</a> * @time Create on 2013-10-29 下午5:28:06 * @version 1.0 */ public class IIOPClientTest { /** * @param args */ public static void main(String[] args) { try { Properties props = new Properties(); props.setProperty("java.naming.factory.initial", "com.sun.jndi.cosnaming.CNCtxFactory"); props.setProperty("java.naming.provider.url", "corbaloc::127.0.0.1:3528/JBoss/Naming/root"); props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming"); System.out.println(">>>> InitialContext "); InitialContext ctx = new InitialContext(props); System.out.println(">>>> lookup "); String serviceName = "demo-jndi/hello"; Object obj = ctx.lookup(serviceName); HelloWorldHome home = (HelloWorldHome) PortableRemoteObject.narrow( obj, HelloWorldHome.class); String result = home.create().sayHello("micmiu.com"); System.out.println(">>>> 调用sayHello(\"micmiu.com\")"); System.out.println(">>>> 结果 = " + result); } catch (Exception e) { e.printStackTrace(); } } } |
调用结果如下:
>>>> InitialContext
>>>> lookup
>>>> 调用sayHello(“micmiu.com”)
>>>> 结果 = Hi,micmiu.com Welecome to EJB 2.x.
IIOP客户端调用EJB测试成功。
本文介绍到此结束@Michael Sun.
原创文章,转载请注明: 转载自micmiu – 软件开发+生活点滴[ http://www.micmiu.com/ ]
本文链接地址: http://www.micmiu.com/opensource/corba/corba-iiop-call-ejb/
0 条评论。