使用 WebLogic RMI 编译器
以下部分描述 WebLogic RMI 编译器:
WebLogic RMI 编译器概述
WebLogic RMI 编译器 (weblogic.rmic
) 是一个用于生成和编译远程对象的命令行实用工具。使用 weblogic.rmic
为应用程序中的自定义远程对象接口生成客户端上的动态代理,并为服务器端对象提供热代码生成。
只需为可群集客户端或 IIOP 客户端显式运行 weblogic.rmic。通过为客户端提供使用 Internet ORB 互联协议(Internet Inter-ORB Protocol,简称 IIOP)访问 RMI 远程对象的能力,WebLogic IIOP 上的 RMI 扩展了 RMI 编程模型。请参阅使用 IIOP 上的 RMI。
WebLogic RMI 编译器功能
以下部分提供有关此版本的 WebLogic RMI 编译器的功能的信息:
热代码生成
运行 rmic
时,需使用 WebLogic Server 的热代码生成功能自动在内存中生成服务器类的字节代码。此字节代码是根据需要为远程对象动态生成的。运行 weblogic.rmic
时,WebLogic Server 不再生成对象的骨架类。
热代码生成可为处理客户端上来自动态代理的请求的服务器端类创建字节代码。动态创建的字节代码可对客户端请求取消序列化,并针对实现类执行这些请求,将结果序列化并将其发送回客户端上的代理。类的实现绑定到 WebLogic Server 中的 WebLogic RMI 注册表中的一个名称。
代理生成
WebLogic RMI 编译器的默认行为是为远程接口生成代理,并使远程类可以共享此代理。代理是远程对象的客户端使用的类。对于 RMI 的情况,将使用动态生成的字节代码和代理类。
例如,example.hello.HelloImpl 和 counter.example.CiaoImpl 用一个代理(与远程对象实现的远程接口相匹配的代理,在此情况下,应为 example.hello.Hello)类和字节代码表示。
远程对象实现多个接口时,代理名和包由接口集的编码确定。可使用 WebLogic RMI 编译器选项 –nomanglednames 替换此默认行为,这将使编译器生成远程类特定的代理。在存在类特定的代理时,它优先于接口特定的代理。
此外,使用 WebLogic RMI 代理类,代理不是最终的。对共存的远程对象的引用是对对象本身的引用,而不是对代理的引用。
动态代理类是传递到客户端的可序列化的类。客户端通过在 WebLogic RMI 注册表中查找类,可获取此类的代理。客户端调用代理上的方法(如同对本地类的调用),代理将请求序列化并将其发送到 WebLogic Server。
WebLogic RMI 编译器的其他功能
WebLogic RMI 编译器的其他功能包括如下方面:
-
远程方法的签名不需要引发 RemoteException。
-
远程异常可映射到 RuntimeException。
-
远程类也可以实现非远程接口。
WebLogic RMI 编译器选项
WebLogic RMI 编译器可接受 Java 编译器支持的任何选项,例如,可以将 -d /classes examples.hello.HelloImpl 添加到命令行的编译器选项中。可使用 Java 编译器支持的所有其他选项,并可将其直接传递到 Java 编译器中。
下表列出了 java weblogic.rmic 选项。请在 java weblogic.rmic 之后和远程类的名称之前输入这些选项。
表 4-1
WebLogic RMI 编译器选项
|
|
|
|
|
|
-dispatchPolicy <queueName>
|
指定服务在 WebLogic Server 中获取执行线程应使用的已配置执行队列。
|
|
|
|
|
|
|
|
|
-idlDirectory <idlDirectory>
|
指定将创建 IDL 文件的目录位置(默认值 = 当前目录)。
|
|
|
|
|
|
|
|
|
|
生成与 Visibroker 4.5 C++ 兼容的 IDL。
|
|
生成与 Orbix 2000 2.0 C++ 兼容的 IDL。
|
|
使用 Sun 的 rmic 版本生成 CORBA 骨架。
|
|
使用 Sun 的 rmic 版本生成 CORBA 存根控件。
|
|
在进行 RMI 调用前挂起事务,并在调用完成后恢复事务。
|
|
指定 Java 编译器。如果未指定,则将使用 -compilerclass 选项。
|
-compilerclass <com.sun.tools.javac.Main>
|
|
|
此群集特定的选项将服务标记为可群集化的(可由 WebLogic Server 群集中的多个服务器承载)。每个承载对象(或副本)绑定到公共名称下的命名服务。当服务存根控件为从命名服务检索时,它包含一个可感知副本的引用(维护副本的列表并执行副本之间的负载平衡和故障转移)。
|
-loadAlgorithm <algorithm>
|
仅供与 -clusterable 结合使用。指定服务特定的算法,供负载平衡和故障转移使用(默认 = weblogic.cluster.loadAlgorithm ).必须为以下之一:循环法、随机或基于权数。
|
-callRouter <callRouterClass>
|
此与 -clusterable 结合使用的群集特定的选项指定将用于路由方法调用的类。此类必须实现 weblogic.rmi.cluster.CallRouter 。如果指定,则在每个方法调用前将调用此类的实例,并可基于方法参数指定将路由至的服务器。此选项或者返回服务器名,或者返回 Null。Null 表示使用当前负载算法。
|
|
此与 -clusterable 结合使用的群集特定的选项可启用“粘滞”负载平衡。为第一个请求提供服务所选择的服务器将用于所有后续请求。
|
|
此与 -clusterable 结合使用的群集特定的选项表示此类上的方法是幂等的。这使存根控件能够尝试从任何通信故障中恢复,即使它不能确保故障出现在远程方法调用之前也可以。默认情况下(如果未使用此选项),存根控件仅对保证为在远程方法调用之前出现的故障进行重试。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
使您能够在运行 WebLogic RMI 编译器时保留生成的存根控件和骨架类文件的源代码。
|
|
|
生成非复制的存根控件
也可以使用 weblogic.rmic
生成未在群集中复制的存根控件。这些存根控件又称为“固定”服务,因为当其注册后,将只能在其注册所在的主机可用,并且将不提供透明的故障转移或负载平衡。固定服务对整个群集可用,因为它们绑定到复制的群集范围的 JNDI 树。但是,如果承载固定服务的单个服务器出现故障,则客户端将无法故障转移到其他服务器。
使用持久性编译器选项
在部署期间,appc 和 ejbc 通过 RMI 编译器运行每个 EJB 容器类,用于创建动态生成存根控件和骨架所需的 RMI 描述符。使用 weblogic-ejb-jar.xml
文件以持久保存 iiop-security-descriptor
元素。有关详细信息,请参阅“WebLogic Enterprise JavaBean 编程”中的 2.1 weblogic-ejb-jar.xml 元素。
分享到:
相关推荐
在本讲义中,我们将深入探讨WebLogic Server——一个由BEA Systems(后来被Oracle收购)开发的企业级Java应用服务器。WebLogic Server是基于Java 2 Platform, Enterprise Edition (J2EE) 规范的,为构建分布式、可...
10. 可以利用WebLogic服务器的其他API和特性,如EJB、JDBC连接池、Servlets和RMI。 三、WebLogic JMS的架构 WebLogic JMS架构主要包括以下组件: 1. WebLogic JMS服务器:实现了消息通信的特性,负责消息的发送和...
`wlfullclient.jar`包含了与EJB交互所需的客户端API,使得开发者可以在客户端代码中调用EJB方法,进行远程方法调用(RMI)或者使用EJB 3.1以上的轻量级注解驱动的编程模型。 **JMS(Java Message Service)** JMS是...
本文将详细介绍`wlfullclient.jar`客户端开发包,它是一个专为WebLogic服务器开发的全面工具集,包含了对RMI(Remote Method Invocation)、JMS(Java Message Service)和EJB3(Enterprise JavaBeans 3.0)的支持,...
集群中的WebLogic服务器通过内部通信机制(比如IIOP、RMI等)和分布式对象管理来实现负载均衡和故障转移。 ### 故障转移(Failover)与负载均衡(Load balancing) 故障转移是指当集群中的一个服务器实例发生故障时...
分布式对象是一种跨越网络的编程模型,它允许不同的计算机系统间的对象互相调用方法,仿佛它们都在同一台机器上。这种技术使得构建大规模、跨平台的应用程序成为可能,尤其在企业级应用中,如BEA Weblogic Server...
2. RMI是Java的一种远程方法调用机制,使得客户机可以调用远程服务器上的对象,简化了分布式环境下的编程。 3. JRMP(Java Remote Method Protocol)是Java RMI使用的特定协议,位于TCP/IP之上,用于查找和引用远程...
第9章则聚焦于利用WebLogic服务器的EJB(Enterprise JavaBeans)技术,EJB是一种用于开发企业级应用的组件架构。 第10章的内容是Java安全体系结构,包括密钥、消息摘要、数字签名、访问控制、安全套接口SSL、主体...
在掌握了服务器使用配置后,需要学习JAVA网络编程,包括Socket、RMI、HTML、XML、JSP、JavaBean、Servlet等。同时,需要掌握Rational Rose、Ant、CVS版本控制、MyEclipse、Dreamweave等开发工具使用。 第4阶段:...
Tomcat、Jetty等Servlet容器运行Java Web应用,而WebLogic、WebSphere等应用服务器提供了更全面的企业级服务,如EJB支持、事务管理等。 八、测试与持续集成 JUnit是Java单元测试的常用工具,Mockito等库帮助我们...
在实现集群编程时,还需要考虑通信协议(如RMI、XML-RPC、Web Service、Corba等)的选择,以及如何处理分布式环境下的并发控制、数据一致性、网络延迟等问题。理解并掌握这些概念和技术,对于构建可扩展且健壮的...
综上所述,Java编程技术因其实时、独立和安全等优势,在计算机软件开发领域发挥了重要作用,并且已经发展成为一个不可替代的编程语言。通过对JDBC、Java注解、Java RMI等技术的研究和应用,Java不断拓展其应用范围,...
- **应用服务器**:如Tomcat、WebLogic、WebSphere等提供EJB容器服务。 - **远程调用**:通过RMI-IIOP或JNDI查找并调用EJB。 - **集成测试**:使用JUnit或Arquillian等工具进行EJB的单元测试和集成测试。 通过...
在J2EE环境中,Webservice可以被看作是一种实现远程方法调用(RMI)和分布式对象模型的方式。 ### BEA WebLogic Server™在Webservice编程中的应用 BEA WebLogic Server™是一款高性能的企业级应用服务器,提供了...
《Java2企业服务器高级编程》是一本深入探讨Java在企业级服务器端应用开发的专业书籍。在Java技术领域,企业服务器端编程是至关重要的部分,它涉及到分布式系统、高并发处理、事务管理、安全机制以及服务集成等多个...