Optimization websphereapplicationserverejb优化

Optimization websphereapplicationserverejb优化,optimization,ejb,websphere,Optimization,Ejb,Websphere,我们正在开发一个基于JavaEE的应用程序。我们的应用程序与Java 1.5兼容,将使用EBJ 3.0和Web服务功能包部署到WAS ND 6.1.0.21。当前的配置是一个单元和两个集群。每个集群将有两个节点 我们的应用程序,或者说我们的系统,正如我应该说的,有两到三个部分 第1部分:部署到包含第三方供应商代码和定制代码的集群的ear。他们的代码是EJB2.0兼容的,并且有很多远程家庭接口 第2部分:部署到与第一个ear相同集群的ear。此ear包含对供应商提供的EJB2和自定义代码进行调用的

我们正在开发一个基于JavaEE的应用程序。我们的应用程序与Java 1.5兼容,将使用EBJ 3.0和Web服务功能包部署到WAS ND 6.1.0.21。当前的配置是一个单元和两个集群。每个集群将有两个节点

我们的应用程序,或者说我们的系统,正如我应该说的,有两到三个部分

第1部分:部署到包含第三方供应商代码和定制代码的集群的ear。他们的代码是EJB2.0兼容的,并且有很多远程家庭接口

第2部分:部署到与第一个ear相同集群的ear。此ear包含对供应商提供的EJB2和自定义代码进行调用的EBJ 3。这些EJB3由JSF UI使用,也与EAR一起打包,其中一些还作为web服务(JAX-WS2.0与SOAP1.2兼容)公开给其他客户端

第3部分:可能还有其他服务不依赖于我们的供应商/自定义代码应用程序。这些服务将是部署到另一个集群的EJB3.0和web服务

根据一些IBM员工的建议,集群中节点之间的通信可以是EJBRMI。但是如果我们跨越集群和/或其他单元,那么通信应该是web服务

这就是说,我们中的一些人想知道性能和优化通信以提高使用web服务和EJB的应用程序的速度。目前,大多数EJB都以远程方式公开。(我们的供应商就是这样设置的,而不是公开本地家庭接口)。我们想知道WAS是否在同一节点/集群节点空间的应用程序之间进行了任何优化。如果两个应用程序安装在同一个区域,并且它们通过远程家庭接口相互呼叫,那么智能程度是否足以使其成为本地家庭接口呼叫

他们还有其他优化技术吗?我们应该考虑它们吗?我们不应该吗?成本/收益是什么?以下是我们的一位团队成员在电子邮件中提出的问题:

问题是:假设我们将EJB开发为远程EJB,其中UI控制器代码通过EJB3与extjava服务通信……当EJB服务器和客户端都在同一容器中运行时,我们的性能优化选项是什么

作为一个参考点,google给了我一些2000年的OOLD websphere性能调优文档,其中解释了一个调优配置,您可以设置该配置,当它们位于同一个应用服务器JVM中时,启用EJB通信的引用调用。它声明如下:

因为EJB天生独立于位置,所以它们使用远程编程 模型方法参数和返回值通过RMI-IIOP序列化并返回 按价值计算。这是内在的RMI“按值调用”模型

WebSphere为运行EJB提供了“无本地副本”性能优化 和同一应用服务器JVM中的客户端(通常是servlet)。“非本地”政策 “复制”选项使用“按引用调用”,不为被调用的对象创建本地代理 当客户端和远程对象处于同一进程中时。依靠 在您的工作负载上,这可以大大节省开销

通过将以下两个命令行参数添加到 应用程序服务器JVM:

* -Djavax.rmi.CORBA.UtilClass=com.ibm.CORBA.iiop.Util
* -Dcom.ibm.CORBA.iiop.noLocalCopies=true
警告:“无本地副本”配置选项可通过以下方式提高性能: 将同一JVM中的客户端和EJB的“按值调用”更改为“按引用调用”。 这样做的一个副作用是Java对象派生(非原语)方法参数 实际上,可以通过被称为企业bean进行更改。考虑图16a:

此外,我们将来还将使用ProcessServer6.2和WESB6.2。有什么想法吗?推荐


感谢

对于远程EJB,唯一可以真正实现的自动优化是,如果它们位于同一个JVM中(从同一个JVM中访问),那么就可以实现。在这种情况下,如果请求需要跨越电线,ORB将短路一些原本需要的工作。仍然会有一些必要的ORB开销,包括对象序列化(除非启用NoLocalCopy,以及它带来的所有警告)

或者,如果您知道UI控制器位于同一位置,则您的方法调用不依赖于参数或返回值复制,并且您的接口不依赖于本地视图和远程视图之间的异常差异,然后,您可以创建并公开一个本地子接口,该子接口将比通过ORB进行远程访问快得多。

我认为此设置(通过引用启用调用)仅适用于EJB远程接口,而不适用于EJB本地接口。