Java 是JPA+;EJB对于Internet上的事务来说太慢(或太重)?
我正在开发一个独立的java客户端应用程序,该应用程序连接到Glassfish v3应用程序,用于JPA/EJB facade样式的事务。换句话说,我的客户机应用程序不直接连接到CRUD的数据库,但它使用EJB无状态会话传输JPA对象 我有这样的场景:这个客户端应用程序将用于通过Internet与VPN连接的外部网络,客户端连接为512kbp/DSL,一个简单的查询花费了很多时间,我看到了流量图,当我在客户端应用程序中合并一个实体时,我看到了兆字节的流量(我无法相信一个采购订单实体的重量会超过1MB) 我几乎每个多对多关系都有惰性获取,但实体之间有很多多对一关系(但这是JPA的最大优势!) 我能做些什么来加快JPA/EJB服务器和远程java客户机之间的事务处理速度吗Java 是JPA+;EJB对于Internet上的事务来说太慢(或太重)?,java,jpa,ejb,vpn,Java,Jpa,Ejb,Vpn,我正在开发一个独立的java客户端应用程序,该应用程序连接到Glassfish v3应用程序,用于JPA/EJB facade样式的事务。换句话说,我的客户机应用程序不直接连接到CRUD的数据库,但它使用EJB无状态会话传输JPA对象 我有这样的场景:这个客户端应用程序将用于通过Internet与VPN连接的外部网络,客户端连接为512kbp/DSL,一个简单的查询花费了很多时间,我看到了流量图,当我在客户端应用程序中合并一个实体时,我看到了兆字节的流量(我无法相信一个采购订单实体的重量会超过1
提前谢谢。您真正传输了多少数据?可能您发送的采购订单有一个产品,有一个型号,有一个供应商,有一组型号…等等 您可以尝试将发送到服务器的对象序列化为一个文件(使用标准的ObjectOutputStrem),并检查该文件有多大 我在看交通图,什么时候 我在客户机中合并一个实体 应用程序我看到兆字节的流量 (我简直不敢相信一次购买 订单实体的权重不能超过1 mb) RMI-IIOP比普通的RMI要详细一点。根据我的经验,在传输大型图时,它不能很好地工作 到目前为止,我还记得(但可能在此期间情况发生了变化),当您传输延迟加载的实体时,尚未加载的部分将按原样发送(代理被序列化),这意味着您无法在客户端上访问它们,因为如果没有会话,延迟加载将不起作用。您是否渴望在将实体发送回客户端之前加载该实体 我能做点什么来加快速度吗 之间的事务处理速度 JPA/EJB服务器与远程java 客户 但问题的关键在于,您需要考虑传输数据的策略。您必须设计一种不会发送大型图形的应用程序;在设计应用程序时必须解决这一问题。然后您可以决定仍然发送JPA实体或依赖数据传输对象(DTO)
你也可以考虑使用有状态会话bean的扩展持久化上下文,这样我认为客户端上的一个实体仍然可以被加载懒惰。但是我从来没有亲自使用过它,也不知道它是否工作得好。
< P>如果我正确地理解了你的体系结构,你就有: Client(works with disconnected Entities)
----RMI/IIOP--->
Server(SLSB, using entitiy manager, JPA persistence)
----JDBC------->
Database
实际上,您的SLSB是用JPA对象来表达其接口,您的DTO是JPA对象。我看到两种可能的情况: