南充建网站的资料,摄影网站建站,wordpress 前台上传图片,管家婆进销存管理系统现在#xff0c;AS 7.0.1已经发布#xff0c;让我们看一下可用的EJB3新功能。 就像我在上一篇文章中提到的那样 #xff0c;AS 7.0.1现在允许您为无状态会话bean和MDB配置池。 当前#xff0c;我们允许在子系统级别配置池#xff0c;这意味着该池将适用于服务器上部署的所… 现在AS 7.0.1已经发布让我们看一下可用的EJB3新功能。 就像我在上一篇文章中提到的那样 AS 7.0.1现在允许您为无状态会话bean和MDB配置池。 当前我们允许在子系统级别配置池这意味着该池将适用于服务器上部署的所有Bean。 在一些即将发布的版本中我们将允许在单个部署和单个Bean级别上配置池。 现在让我们看看子系统级别的配置。 在我以前的文章中我提到AS 7.0.1有2个发行版。 一个纯粹是webprofile另一个称为“ everything”具有其他EE功能例如对MDB的支持。 在本文中我将使用“ Everything”发行版和JBOSS_HOME / standalone / configurations / standalone-preview.xml来解释配置。 在开始配置之前对于不熟悉AS7的那些人让我们看看如何使用特定的配置文件启动服务器。 首先下载服务器然后将二进制文件解压缩到您选择的文件夹中。 然后从命令提示符下移至安装的“ bin”文件夹。 在此文件夹中您将看到standalone.bat / standalone.sh和domain.bat / domain.sh。 在本文中我们将专注于独立服务器但是对于域配置中的EJB3子系统也是如此。 启动独立服务器 因此让我们启动服务器。 我在Linux系统上因此我将使用standalone.sh文件。 在Windows上您必须使用standalone.bat。 jpaijpai-laptop:bin$ ./standalone.sh 在大约几秒钟内您将看到服务器已启动并正在运行 jpaijpai-laptop:bin$ ./standalone.sh JBoss Bootstrap Environment JBOSS_HOME: /NotBackedUp/jpai/jboss-as-7.0.1.Final JAVA: /opt/Java/SunJava-6/jdk1.6.0_21//bin/java JAVA_OPTS: -server -Xms64m -Xmx512m -XX:MaxPermSize256m -Djava.net.preferIPv4Stacktrue -Dorg.jboss.resolver.warningtrue -Dsun.rmi.dgc.client.gcInterval3600000 -Dsun.rmi.dgc.server.gcInterval3600000 -Djboss.modules.system.pkgsorg.jboss.byteman 09:30:31,537 INFO [org.jboss.modules] JBoss Modules version 1.0.1.GA 09:30:31,765 INFO [org.jboss.msc] JBoss MSC version 1.0.0.GA 09:30:31,818 INFO [org.jboss.as] JBoss AS 7.0.1.Final Zap starting 09:30:32,618 WARN [org.jboss.as] No security realm defined for native management service, all access will be unrestricted. 09:30:32,693 INFO [org.jboss.as] creating http management service using network interface (management) port (9990) 09:30:32,694 WARN [org.jboss.as] No security realm defined for http management service, all access will be unrestricted. 09:30:32,703 INFO [org.jboss.as.logging] Removing bootstrap log handlers 09:30:32,720 INFO [org.jboss.as.connector.subsystems.datasources] (Controller Boot Thread) Deploying JDBC-compliant driver class org.h2.Driver (version 1.2) 09:30:32,739 INFO [org.jboss.as.clustering.infinispan.subsystem] (Controller Boot Thread) Activating Infinispan subsystem. 09:30:32,905 INFO [org.jboss.as.naming] (Controller Boot Thread) Activating Naming Subsystem 09:30:32,915 INFO [org.jboss.as.naming] (MSC service thread 1-1) Starting Naming Service 09:30:32,918 INFO [org.jboss.as.osgi] (Controller Boot Thread) Activating OSGi Subsystem 09:30:32,940 INFO [org.jboss.as.security] (Controller Boot Thread) Activating Security Subsystem 09:30:32,957 INFO [org.jboss.remoting] (MSC service thread 1-4) JBoss Remoting version 3.2.0.Beta2 09:30:32,968 INFO [org.xnio] (MSC service thread 1-4) XNIO Version 3.0.0.Beta3 09:30:32,982 INFO [org.xnio.nio] (MSC service thread 1-4) XNIO NIO Implementation Version 3.0.0.Beta3 09:30:33,182 INFO [org.apache.catalina.core.AprLifecycleListener] (MSC service thread 1-4) The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /opt/Java/SunJava-6/jdk1.6.0_21/jre/lib/i386/server:/opt/Java/SunJava-6/jdk1.6.0_21/jre/lib/i386:/opt/Java/SunJava-6/jdk1.6.0_21/jre/../lib/i386:/usr/java/packages/lib/i386:/lib:/usr/lib 09:30:33,203 INFO [org.jboss.as.jmx.JMXConnectorService] (MSC service thread 1-2) Starting remote JMX connector 09:30:33,209 INFO [org.jboss.as.remoting] (MSC service thread 1-1) Listening on /127.0.0.1:9999 09:30:33,232 INFO [org.jboss.as.ee] (Controller Boot Thread) Activating EE subsystem 09:30:33,390 INFO [org.apache.coyote.http11.Http11Protocol] (MSC service thread 1-4) Starting Coyote HTTP/1.1 on http--127.0.0.1-8080 09:30:33,512 INFO [org.jboss.as.connector] (MSC service thread 1-1) Starting JCA Subsystem (JBoss IronJacamar 1.0.3.Final) 09:30:33,554 INFO [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-4) Bound data source [java:jboss/datasources/ExampleDS] 09:30:33,919 INFO [org.jboss.as.deployment] (MSC service thread 1-4) Started FileSystemDeploymentService for directory /NotBackedUp/jpai/jboss-as-7.0.1.Final/standalone/deployments 09:30:33,931 INFO [org.jboss.as] (Controller Boot Thread) JBoss AS 7.0.1.Final Zap started in 2636ms - Started 93 of 148 services (55 services are passive or on-demand) 使用其他服务器配置文件 默认情况下standalone.sh命令使用名为“ standalone.xml”的配置文件该文件位于JBOSS_HOME / standalone / configuration文件夹中。 该命令还允许您指定其他配置文件以启动服务器。 如前所述我将在本文中使用standalone-preview.xml。 因此让我们使用standalone-preview.xml启动服务器。 jpaijpai-laptop:bin$ ./standalone.sh -server-configstandalone-preview.xml 如您所见我们传递了-server-config参数其中standalone-preview.xml作为参数值。 默认情况下在JBOSS_HOME / standalone / configuration文件夹中查找文件。 服务器在大约3.5秒内启动 09:35:59,694 INFOnbsp; [org.jboss.as] (Controller Boot Thread) JBoss AS 7.0.1.Final Zap started in 3586ms - Started 125 of 184 services (59 services are passive or on-demand) EJB3子系统配置 现在我们已经了解了如何启动服务器让我们继续查看配置。 在standalone-preview.xml中查找如下所示的EJB3子系统 subsystem xmlnsurn:jboss:domain:ejb3:1.1 timer-service thread-pool core-threads1 max-threads4 / data-store pathtimer-service-data relative-tojboss.server.data.dir / /timer-service !-- EJB3 pools -- pools bean-instance-pools strict-max-pool nameslsb-strict-max-pool max-pool-size20 instance-acquisition-timeout5 instance-acquisition-timeout-unitMINUTES/ strict-max-pool namemdb-strict-max-pool max-pool-size20 instance-acquisition-timeout5 instance-acquisition-timeout-unitMINUTES/ /bean-instance-pools /pools !-- Default MDB configurations -- mdb resource-adapter-ref resource-adapter-namehornetq-ra/ bean-instance-pool-ref pool-namemdb-strict-max-pool/ /mdb !-- Session bean configurations -- session-bean stateless bean-instance-pool-ref pool-nameslsb-strict-max-pool/ /stateless /session-bean /subsystem 这是EJB3子系统级别配置所在的位置。 让我们快速看一下其中的一些。 第一个配置是针对EJB3定时器服务的。 在本文中我们不会对此进行过多的介绍。 EJB3池 下一个配置是“池” !-- EJB3 pools -- pools bean-instance-pools strict-max-pool nameslsb-strict-max-pool max-pool-size20 instance-acquisition-timeout5 instance-acquisition-timeout-unitMINUTES/ strict-max-pool namemdb-strict-max-pool max-pool-size20 instance-acquisition-timeout5 instance-acquisition-timeout-unitMINUTES/ /bean-instance-pools /pools 在这里配置EJB3使用的池。 在“ pools”元素中可以使用“ bean-instance-pools”元素配置bean实例池。 在AS 7.0.1中我们仅支持“ strict-max-pool”作为bean实例池。 严格的最大池允许您配置池的最大上限。 在运行时当池中的所有bean实例都在使用中并且新的bean调用请求进入时池将阻塞该请求直到下一个bean实例可用或超时在instance-acquisition-timeout中设置为止。 每个池都有一个唯一的名称。 上面的配置显示2个严格的最大池分别名为“ slsb-strict-max-pool”和“ mdb-strict-max-pool”。 您可以在其中添加新的严格最大池并为其选择唯一的名称。 您可以手动编辑xml服务器关闭时以添加新的严格最大池也可以使用AS7随附的命令行客户端CLI。 在本文后面的内容中我们将介绍如何使用CLI。 消息驱动的Bean配置 现在让我们转到该EJB3子系统中的下一个配置 !-- Default MDB configurations -- mdb resource-adapter-ref resource-adapter-namehornetq-ra/ bean-instance-pool-ref pool-namemdb-strict-max-pool/ /mdb 本节使用默认值配置MDB。 MDB的默认资源适配器 “ resource-adapter-ref”元素指定MDB将使用的默认资源适配器。 在此示例中它表明我们使用hornetq-ra作为默认RA。 MDB的默认bean实例池 bean-instance-pool-ref充当对bean-instance-pool的引用它将用作所有MDB的默认池配置。 在此示例中我们看到它指向“ mdb-strict-max-pool”我们在前面的部分中看到它被配置为严格的最大池其中池的上限为20。 如果要更改MDB的默认bean实例池则只需将bean-instance-pool-ref元素的pool-name属性更改为其他可用的bean实例池。 您可以通过直接编辑xml在服务器关闭时来执行此操作也可以使用CLI来执行此操作稍后将看到如何完成此操作。 无状态会话Bean配置 转到EJB3配置的下一部分您将看到 !-- Session bean configurations -- session-bean stateless bean-instance-pool-ref pool-nameslsb-strict-max-pool/ /stateless /session-bean 在这里配置会话Bean的默认值。 就像我们在MDB中看到的一样以上配置显示了如何为无状态会话Bean配置默认Bean实例池。 在这里我们看到“ slsb-strict-max-pool”被用作默认值。 就像MDB一样您可以通过直接在xml中或通过CLI更改bean-instance-pool-ref元素的pool-name属性来更改无状态会话bean的默认bean实例池。 使用命令行客户端CLI AS7带有功能强大的命令行客户端。 查看CLI上的AS7文档以获取快速参考。 命令行客户端工具是使用JBOSS_HOME / bin文件夹中的jboss-admin.sh/jboss-admin.bat脚本启动的 jpaijpai-laptop:bin$ ./jboss-admin.sh 在运行该脚本时您会注意到以下消息该消息使您可以连接到服务器 You are disconnected at the moment. Type connect to connect to the server or help for the list of supported commands. [disconnected /] CLI需要运行中的服务器才能连接。 因此如果您尚未启动服务器请先启动它如上一节中所述。 现在让我们通过命令行连接到服务器 [disconnected /] connect Connected to standalone controller at localhost:9999 [standalonelocalhost:9999 /] 因此CLI现在已连接到正在9999端口上监听localhost的服务器。可以为CLI传递不同的主机名和端口以进行连接但现在就不要再讨论了。 从CLI连接到服务器后现在就可以从CLI运行操作来管理正在运行的服务器。 现在让我们看一下如何管理EJB3子系统的bean实例池配置。 从CLI创建一个新的strict max bean实例池 从CLI连接到服务器后可以按以下方式创建一个新的strict max bean实例池 [standalonelocalhost:9999 /] /subsystemejb3/strict-max-bean-instance-poolnew-pool:add 我建议您阅读CLI文档以更好地了解该命令。 但是让我简要地分解上面的命令并解释每个部分的作用。 需要注意的重要一点是您不必在CLI上键入所有这些内容。 CLI提供了非常非常有用的制表符完成功能 因此输入/ subsystem 并按下选项卡将显示可用的选项。 了解Bean实例池创建命令 从CLI文档 操作请求基本上由三部分组成地址操作名称和一组可选参数。 操作请求的正式规范为 [/node-typenode-name (/node-typenode-name)*] : operation-name [( [parameter-nameparameter-value (,parameter-nameparameter-value)*] )] 在此示例中我们的目标是创建一个新的strict max bean实例池。 这可以通过发出“添加”操作来完成。 在我上面发布的命令中请注意最后使用“add”。 操作始终以“”开头后跟操作名称。 因此在上面的示例中我们正在执行“add”操作。 现在必须在特定的“资源”上执行“添加”操作。 即服务器必须知道要添加什么以及在哪里。 这称为寻址。 为了运行操作需要提供一个地址不要将此与服务器的主机名/端口“地址”混淆这是完全不同的。 用AS7管理术语来说服务器由可管理的“资源”组成每个资源都有其自己的地址。 例如可以解决组成服务器配置的每个子系统。 要从命令行客户端引用ejb3子系统请使用/ subsystem ejb3可以使用制表符补全。 假设我们正在创建的新池将被命名为“新池”。 因此最终需要执行“添加”操作的地址如下所示 /subsystemejb3/strict-max-bean-instance-poolnew-pool 最后我们将地址和操作结合起来并从CLI运行它 [standalonelocalhost:9999 /] /subsystemejb3/strict-max-bean-instance-poolnew-pool:add 操作成功完成后将显示以下输出 [standalonelocalhost:9999 /] /subsystemejb3/strict-max-bean-instance-poolnew-pool:add {outcome success} 所有管理操作都保留在服务器配置文件中。 在我们的例子中它是standalone-preview.xml因为这是我们用来启动服务器的文件。 运行该操作之后您现在可以在文本编辑器中打开standalone-preview.xml并注意已将名为“ new-pool”的新的严格的最大bean实例池添加到“ bean-instance-pools”中 pools bean-instance-pools strict-max-pool nameslsb-strict-max-pool max-pool-size20 instance-acquisition-timeout5 instance-acquisition-timeout-unitMINUTES/ strict-max-pool namemdb-strict-max-pool max-pool-size20 instance-acquisition-timeout5 instance-acquisition-timeout-unitMINUTES/ strict-max-pool namenew-pool/ /bean-instance-pools /pools 尚未设置max-pool-size和其他属性将使用默认值。 这是因为在运行操作时我们没有为这些属性指定任何值。 现在让我们尝试发出命令来创建一个具有某些特定属性值的池名为“ take2”。 现在该命令将如下所示 [standalonelocalhost:9999 /] /subsystemejb3/strict-max-bean-instance-pooltake2:add(max-pool-size15,timeout2) 因此上面的命令与上一个命令相似除了池的名称为“ take2”并且我们另外指定了最大池大小为15和超时为2并将timeout-unit为默认值。 请注意编写该命令时可以使用制表符补全。 运行该命令时您将看到以下输出 [standalonelocalhost:9999 /] /subsystemejb3/strict-max-bean-instance-pooltake2:add(max-pool-size15,timeout2) {outcome success} 现在standalone-preview.xml如下所示 pools bean-instance-pools strict-max-pool nameslsb-strict-max-pool max-pool-size20 instance-acquisition-timeout5 instance-acquisition-timeout-unitMINUTES/ strict-max-pool namemdb-strict-max-pool max-pool-size20 instance-acquisition-timeout5 instance-acquisition-timeout-unitMINUTES/ strict-max-pool namenew-pool/ strict-max-pool nametake2 max-pool-size15 instance-acquisition-timeout2/ /bean-instance-pools /pools 请注意“ take2”池的max-pool-size和instance-acquisition-timeout值设置为我们在CLI上指定的值。 这样便可以通过CLI创建新的bean实例池。 设置/更改MDB和SLSB使用的默认bean实例池 在上一节中我们看到了如何创建一个新的bean实例池。 现在如果我们希望这个新池成为MDB和/或SLSB的默认池配置那么我们可以使用CLI来做到这一点。 首先让我们看看如何对MDB进行操作 [standalonelocalhost:9999 /] /subsystemejb3:write-attribute(namedefault-mdb-instance-pool, valuetake2) 因此我们正在/ subsystem ejb3地址上执行“写属性”操作以写入名为“ default-mdb-instance-pool”的属性其值为“ take2”。 有效地此命令将从“ mdb-strict-max-pool”更改默认的MDB bean实例池请记住我们之前在standalone-preview.xml中的bean-instance-pool-ref部分中看到了这一点。 MDB到我们创建的“ take2”池。 运行此命令将显示以下输出 [standalonelocalhost:9999 /] /subsystemejb3:write-attribute(namedefault-mdb-instance-pool, valuetake2) {outcome success} 现在如果在文本编辑器中打开standalone-preview.xml您将注意到更改已完成– MDB配置现在将“ take2”用作所有MDB的默认池配置此后。 mdb resource-adapter-ref resource-adapter-namehornetq-ra/ bean-instance-pool-ref pool-nametake2/ /mdb 我们也可以对无状态会话Bean配置执行相同的操作。 该命令是 [standalonelocalhost:9999 /] /subsystemejb3:write-attribute(namedefault-slsb-instance-pool, valuenew-pool) {outcome success} 在这里我们将default-slsb-instance-pool设置为我们先前创建的“ new-pool”。 现在standalone-preview.xml文件将如下所示 session-bean stateless bean-instance-pool-ref pool-namenew-pool/ /stateless /session-bean 就是这样了 现在我们已经使用CLI来配置/管理EJB3池。 禁用MDB和无状态会话Bean的池 我们还允许为MDB和SLSB禁用池。 但是并不总是建议这样做因为它可能会影响性能。 如果作为开发人员您知道您的bean在构造期间不会太重即在构造函数中没有任何负担在PostConstruct中没有任何负担那么有时它有助于禁用对bean的合并。 当前唯一的方法是从EJB3子系统配置中的和/或元素中删除该元素。 目前我们尚无法通过CLI进行此操作也无法在每个部署或每个bean级别上指定此方法。 因此如果您知道禁用池化将使您受益那么这就是禁用它的方法。 摘要 我没想到这个博客会花那么长的时间。 但是由于其中大多数是AS7中的新功能因此值得编写。 因此在此博客中我们了解了如何配置EJB3 bean实例池以及在何处配置EJB3实例池如何创建新的bean实例池如何为MDB和无状态会话bean更改默认的bean实例池。 我们还看到了如何使用AS7中的CLI来完成所有这些工作。 参考 JBoss AS 7.0.1 –从我们的JCG合作伙伴 Jaikirian的“ Jaitech WriteUps”博客中 配置EJB3池 。 相关文章 JBoss AS 7.0.2“ Arc”发布–使用绑定选项 带有Spring和Maven教程的JAX–WS JBoss 4.2.x Spring 3 JPA Hibernate教程 调试生产服务器– Eclipse和JBoss展示 Java EE6 CDI命名组件和限定符 Java教程和Android教程列表 翻译自: https://www.javacodegeeks.com/2011/11/jboss-as-7-ejb3-pools-configuration.html