桂林做网站公司有哪些,石家庄哪里有做外贸网站的公司,iis 网站访问权限 设置,wordpress 外链背景图在我的四部分系列的第二部分中#xff0c;我将解释将Coherence与EclipseLink和GlassFish一起使用的策略第一。这描述了配置Coherence的JPA支持的Cache所必须采取的步骤#xff0c;以及如何在GlassFish中使用它。高性能数据存储。 一般的做法 您可以将Coherence API与通过JPA映… 在我的四部分系列的第二部分中我将解释将Coherence与EclipseLink和GlassFish一起使用的策略第一。这描述了配置Coherence的JPA支持的Cache所必须采取的步骤以及如何在GlassFish中使用它。高性能数据存储。 一般的做法 您可以将Coherence API与通过JPA映射的数据库支持的缓存一起使用。 网格通过JPA CacheLoader和CacheStore实现访问关系数据。 在这种“传统”一致性方法中TopLink Grid提供了针对EclipseLink JPA优化的CacheLoader和CacheStore实现。 EclipseLinkJPACacheLoader和EclipseLinkJPACacheStore都包含在toplink-grid.jar文件中。 这样您将使用标准的JPA运行时配置文件persistence.xml和JPA映射文件orm.xml。 必须指定Coherence缓存配置文件coherence-cache-config.xml来覆盖默认的Coherence设置并定义CacheStore缓存方案。 细节 CacheLoader实现通过EclipseLink将所有读取操作/查询直接重定向到数据库。 CacheStore负责使用EclipseLink对数据库执行的所有写操作插入更新删除。 该解决方案基本上独立于GlassFish及其JPA提供程序。 您只需将Coherence与它的本机API一起使用并且Coherence负责持久化实体。 该方法在文档中称为“传统相干配置”。 制备 为了使该示例和以下每个示例都能正常工作我们需要做一些准备。 首先是获得所有必需的软件。 获得Java SE开发套件6u23 GlassFish 3.1NetBeans的一部分 MySQL Community Server5.5.9 TopLink11.1.1.4.0和Coherence 3.6.1.0的副本 。 任何IDE都可以。 我将所有示例都基于NetBeans 7.0 Beta2 。 您应该首先安装零碎的零件。 使用MySQL创建一个空的“一致性”数据库。 我们将在所有示例中使用此示例。 我不会指导您完成此操作。 我将从相关的一致性部分开始。 这也是您需要遵循本系列其他部分的配置。 所以你最好保留它; 将您的Coherence下载文件解压缩到合适的位置例如x\ Oracle \ coherence \然后通过设置并运行示例缓存服务器应用程序来检查安装。 转到\ bin文件夹然后执行cache-server.cmd / sh。 在此之前请确保JAVA_HOME变量指向有效的JDK安装。 如果一切顺利您会收到消息“ Started DefaultCacheServer…”。 一个简单的旁注一致性是群集感知的。 这意味着它将自动尝试发现您子网中其他正在运行的Coherence节点。 如果您看到“ ActualMemberSet MemberSetSize 1”以外的任何其他输出则应在此处停止并将Coherence配置为仅在计算机上运行 。太好了所有设置。让我们执行示例客户端。启动coherence.cmd / sh并等待输出“ Map”。如果您使用服务器控制台进行检查将看到以下内容 (threadCluster, member1): Member 2 joined Service Management with senior member 1 试一试然后尝试以下命令每个命令均以返回确认帮助缓存myCache输入消息“ hello”获取消息大小列表再见。 要获得更多帮助请查阅教程 。 付诸实践 使用NetBeans启动一个新的Java / Java类库项目。 将其命名为“ GridEntityExample”选中专用的lib文件夹框。 将coherence.jartoplink-grid.jar和mysql-connector-java-5.1.13-bin.jar添加到lib文件夹中并将它们添加到项目依赖项中。 添加两个新的程序包实体和服务器例如net.eisele.coherence.entitiesnet.eisele.coherence.server并 由于我们已经有了缓存服务器示例因此很容易对其进行修改以满足我们的需求。 将新的实体类员工添加到实体包中。 将主键类型更改为“ int”然后单击下一步。 从下拉框中选择EclipseLink JPA 2.0。 由于向导将不允许您完成操作因此请创建一个新的数据库连接jdbcmysql// localhost3306 / coherence然后单击完成。 将两个私有字符串firstNamelastName及其获取器和设置器添加到实体。 从id属性中删除GeneratedValue稍后会详细介绍。 persistence.xml中的一些调整完成了配置。 添加以下内容 property nameeclipselink.ddl-generation valuecreate-tables /
property nameeclipselink.ddl-generation.output-mode
valuedatabase /
property nameeclipselink.jdbc.read-connections.min value1 /
property nameeclipselink.jdbc.write-connections.min value1 /
property nameeclipselink.jdbc.batch-writing valueJDBC /
property nameeclipselink.logging.level valueFINE /
property nameeclipselink.logging.thread valuefalse /
property nameeclipselink.logging.session valuefalse /
property nameeclipselink.logging.exceptions valuefalse /
property nameeclipselink.logging.timestamp valuefalse/ 现在我们需要一个简单的StartCacheServer类该类应抵抗服务器软件包。 给它一个简单的主要方法 public static void main(String[] args) throws UnknownHostException {
// Restrict Coherence to localhost
System.setProperty(tangosol.coherence.wka, InetAddress.getLocalHost().getHostAddress());// Start CacheServer
DefaultCacheServer.main(new String[0]);
} 现在我们必须配置一致性。 这是通过coherence-cache-config.xml文件完成的。 完整的文件可以在教程中找到 。 成功的关键是class方案的第二个init参数。 您必须从那里的persistence.xml引用持久性单元 init-param
param-typejava.lang.String/param-type
param-valueGridEntityExamplePU/param-value
/init-param 右键单击StartCacheServer并运行它。 您应该看到已经知道的消息“ Started DefaultCacheServer…”。 好。 现在我们将第一位员工插入数据库。 创建一个简单的InsertExample类 public static void main(String[] args) throws UnknownHostException {
// Restrict Coherence to localhost
System.setProperty(tangosol.coherence.wka, InetAddress.getLocalHost().getHostAddress());// Disable local storage--need to start independent CacheServer
System.setProperty(tangosol.coherence.distributed.localstorage, false);// Get the configured Cache
NamedCache cache CacheFactory.getCache(Employee);//Create a new Employee
Employee emp new Employee();
emp.setFirstName(Markus);
emp.setLastName(Eisele);
emp.setId(1);//Put the Employee into the cache
cache.put(1, emp);
} 运行它并检查您的数据库是否有新创建的Employee。 它应该是 做完了 就这样。 好的GlassFish部分到底在哪里 在GlassFish中使用此方法 这很简单。 创建一个新的域我们称其为一致性并创建一个新的WebApplication将其称为GridEntityWeb。 添加GridEntityExample项目和coherence.jar作为依赖项。 现在您必须配置缓存。 再次通过coherence-cache-config.xml完成。 在WEB-INF / classes中创建一个并使其引用EclipseLinkJPA服务名称。 cache-configcaching-scheme-mapping
cache-mapping
cache-name*/cache-name
scheme-namedistributed-eclipselink/scheme-name
/cache-mapping
/caching-scheme-mappingcaching-schemes
distributed-scheme
scheme-namedistributed-eclipselink/scheme-name
service-nameEclipseLinkJPA/service-name
/distributed-scheme
/caching-schemes/cache-config 就这样。 确保StartCacheServer正在运行并启动GlassFish域和应用程序。 如果仅从InsertExample中复制几行则可以快速测试是否一切正常。 现在剩下要做的就是找到一种干净的方法将其集成到您的应用程序中。 也许您可以提出一个通用的Coherence Crud服务可能基于Adam的建议 。 缺点和想法 使用这种方法时必须配置持久性单元以确保在插入或更新实体时不对实体进行任何更改。 JPA提供程序对实体所做的任何更改都不会反映在Coherence缓存中。 这意味着缓存中的实体将与数据库内容不匹配。 特别是实体不应使用ID生成例如GeneratedValue来获取ID。 这意味着为了将对象插入Coherence缓存中您还需要提供其身份作为键。 ID通常是实体存储在Coherence中的密钥。 不应使用乐观锁定例如 Version因为它可能导致数据库事务提交失败。 因此总的来说这并不是真正的常用方法它只适合您在处理大量数据的某些特殊情况下使用。 但是这里到底是什么交易。 让我们看看如果循环运行配置的示例并插入12.635 Employee对象则在我的计算机上大约需要13分钟。 如果在同步模式下运行Coherence则会发生这种情况。 但是您可以利用称为“后写”的功能通过异步执行数据库更新来缩短应用程序响应时间。 如果将一行添加到CacheServer的coherence-cache-config.xml write-delay10s/write-delay 从应用程序角度出发插入插件所需的时间减少到9秒 当然运行中的服务器仍然需要时间异步处理更新但是对于客户端来说这是最佳行为。 现在足够了。 我将尝试通过示例解释更多的概念。 正如您可能已经猜到的是否使用缓存有很多要知道的地方。 下一部分将介绍Coherence作为带有GlassFish的EclipseLink的L2缓存。 谢谢阅读。 敬请关注。 参考 具有GlassFish和一致性的高性能JPA –第2部分来自我们的JCG合作伙伴 Markus Eisele 在“使用Java进行企业软件开发”博客中 相关文章 具有GlassFish和一致性的高性能JPA –第1部分 具有GlassFish和一致性的高性能JPA –第3部分 在云中开发和测试 Java EE中的配置管理 泄漏Oracle WebLogic Server 12g Java EE6装饰器在注入时装饰类 Java教程和Android教程列表 翻译自: https://www.javacodegeeks.com/2011/11/high-performance-jpa-with-glassfish-and_03.html