现在,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。

jpai@jpai-laptop:bin$ ./standalone.sh

在大约几秒钟内,您将看到服务器已启动并正在运行:

jpai@jpai-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:MaxPermSize=256m -Djava.net.preferIPv4Stack=true -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djboss.modules.system.pkgs=org.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启动服务器。

jpai@jpai-laptop:bin$ ./standalone.sh -server-config=standalone-preview.xml

如您所见,我们传递了-server-config参数,其中standalone-preview.xml作为参数值。 默认情况下,在JBOSS_HOME / standalone / configuration文件夹中查找文件。 服务器在大约3.5秒内启动:

09:35:59,694 INFO  [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 xmlns="urn:jboss:domain:ejb3:1.1" >  <timer-service>  <thread-pool core-threads="1" max-threads="4" />  <data-store path="timer-service-data" relative-to="jboss.server.data.dir" />  </timer-service>  <!-- EJB3 pools -->  <pools>  <bean-instance-pools>  <strict-max-pool name="slsb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5"  instance-acquisition-timeout-unit="MINUTES"/>  <strict-max-pool name="mdb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5"  instance-acquisition-timeout-unit="MINUTES"/>  </bean-instance-pools>  </pools>  <!-- Default MDB configurations -->  <mdb>  <resource-adapter-ref resource-adapter-name="hornetq-ra"/>  <bean-instance-pool-ref pool-name="mdb-strict-max-pool"/>  </mdb>  <!-- Session bean configurations -->  <session-bean>  <stateless>  <bean-instance-pool-ref pool-name="slsb-strict-max-pool"/>  </stateless>  </session-bean>  </subsystem>

这是EJB3子系统级别配置所在的位置。 让我们快速看一下其中的一些。 第一个配置是针对EJB3定时器服务的。 在本文中,我们不会对此进行过多的介绍。

EJB3池

下一个配置是“池”:

<!-- EJB3 pools -->  <pools>  <bean-instance-pools>  <strict-max-pool name="slsb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5"  instance-acquisition-timeout-unit="MINUTES"/>  <strict-max-pool name="mdb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5"  instance-acquisition-timeout-unit="MINUTES"/>  </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-name="hornetq-ra"/>  <bean-instance-pool-ref pool-name="mdb-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-name="slsb-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脚本启动的:

jpai@jpai-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  [standalone@localhost:9999 /]

因此,CLI现在已连接到正在9999端口上监听localhost的服务器。可以为CLI传递不同的主机名和端口以进行连接,但现在就不要再讨论了。

从CLI连接到服务器后,现在就可以从CLI运行操作来管理正在运行的服务器。 现在让我们看一下如何管理EJB3子系统的bean实例池配置。

从CLI创建一个新的strict max bean实例池

从CLI连接到服务器后,可以按以下方式创建一个新的strict max bean实例池:

[standalone@localhost:9999 /] /subsystem=ejb3/strict-max-bean-instance-pool=new-pool:add

我建议您阅读CLI文档,以更好地了解该命令。 但是,让我简要地分解上面的命令并解释每个部分的作用。

需要注意的重要一点是,您不必在CLI上键入所有这些内容。 CLI提供了非常非常有用的制表符完成功能! 因此,输入/ subsystem =并按下选项卡将显示可用的选项。

了解Bean实例池创建命令

从CLI文档:

操作请求基本上由三部分组成:地址,操作名称和一组可选参数。

操作请求的正式规范为:

[/node-type=node-name (/node-type=node-name)*] : operation-name [( [parameter-name=parameter-value (,parameter-name=parameter-value)*] )]

在此示例中,我们的目标是创建一个新的strict max bean实例池。 这可以通过发出“添加”操作来完成。 在我上面发布的命令中,请注意最后使用“:add”。 操作始终以“:”开头,后跟操作名称。 因此,在上面的示例中,我们正在执行“:add”操作。

现在,必须在特定的“资源”上执行“添加”操作。 即服务器必须知道要添加什么以及在哪里。 这称为寻址。 为了运行操作,需要提供一个地址(不要将此与服务器的主机名/端口“地址”混淆,这是完全不同的)。 用AS7管理术语来说,服务器由可管理的“资源”组成,每个资源都有其自己的地址。 例如,可以解决组成服务器配置的每个子系统。 要从命令行客户端引用ejb3子系统,请使用/ subsystem = ejb3(可以使用制表符补全)。

假设我们正在创建的新池将被命名为“新池”。 因此,最终需要执行“添加”操作的地址如下所示:

/subsystem=ejb3/strict-max-bean-instance-pool=new-pool

最后,我们将地址和操作结合起来并从CLI运行它

[standalone@localhost:9999 /] /subsystem=ejb3/strict-max-bean-instance-pool=new-pool:add

操作成功完成后,将显示以下输出:

[standalone@localhost:9999 /] /subsystem=ejb3/strict-max-bean-instance-pool=new-pool:add  {"outcome" => "success"}

所有管理操作都保留在服务器配置文件中。 在我们的例子中,它是standalone-preview.xml,因为这是我们用来启动服务器的文件。

运行该操作之后,您现在可以在文本编辑器中打开standalone-preview.xml并注意,已将名为“ new-pool”的新的严格的最大bean实例池添加到“ bean-instance-pools”中:

<pools>  <bean-instance-pools>  <strict-max-pool name="slsb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>  <strict-max-pool name="mdb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>  <strict-max-pool name="new-pool"/>  </bean-instance-pools>  </pools>

尚未设置max-pool-size和其他属性,将使用默认值。 这是因为在运行操作时,我们没有为这些属性指定任何值。 现在,让我们尝试发出命令来创建一个具有某些特定属性值的池(名为“ take2”)。 现在,该命令将如下所示:

[standalone@localhost:9999 /] /subsystem=ejb3/strict-max-bean-instance-pool=take2:add(max-pool-size=15,timeout=2)

因此,上面的命令与上一个命令相似,除了池的名称为“ take2”,并且我们另外指定了最大池大小为15和超时为2并将timeout-unit为默认值。 请注意,编写该命令时可以使用制表符补全。 运行该命令时,您将看到以下输出:

[standalone@localhost:9999 /] /subsystem=ejb3/strict-max-bean-instance-pool=take2:add(max-pool-size=15,timeout=2)  {"outcome" => "success"}

现在,standalone-preview.xml如下所示:

<pools>  <bean-instance-pools>  <strict-max-pool name="slsb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>  <strict-max-pool name="mdb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>  <strict-max-pool name="new-pool"/>  <strict-max-pool name="take2" max-pool-size="15" instance-acquisition-timeout="2"/>  </bean-instance-pools>  </pools>

请注意,“ take2”池的max-pool-size和instance-acquisition-timeout值设置为我们在CLI上指定的值。

这样便可以通过CLI创建新的bean实例池。

设置/更改MDB和SLSB使用的默认bean实例池

在上一节中,我们看到了如何创建一个新的bean实例池。 现在,如果我们希望这个新池成为MDB和/或SLSB的默认池配置,那么我们可以使用CLI来做到这一点。

首先让我们看看如何对MDB进行操作:

[standalone@localhost:9999 /] /subsystem=ejb3:write-attribute(name=default-mdb-instance-pool, value=take2)

因此,我们正在/ subsystem = ejb3地址上执行“写属性”操作,以写入名为“ default-mdb-instance-pool”的属性,其值为“ take2”。 有效地,此命令将从“ mdb-strict-max-pool”更改默认的MDB bean实例池(请记住,我们之前在standalone-preview.xml中的bean-instance-pool-ref部分中看到了这一点。 MDB)到我们创建的“ take2”池。 运行此命令将显示以下输出

[standalone@localhost:9999 /] /subsystem=ejb3:write-attribute(name=default-mdb-instance-pool, value=take2)  {"outcome" => "success"}

现在,如果在文本编辑器中打开standalone-preview.xml,您将注意到更改已完成– MDB配置现在将“ take2”用作所有MDB的默认池配置(此后)。

<mdb>  <resource-adapter-ref resource-adapter-name="hornetq-ra"/>  <bean-instance-pool-ref pool-name="take2"/>  </mdb>

我们也可以对无状态会话Bean配置执行相同的操作。 该命令是:

[standalone@localhost:9999 /] /subsystem=ejb3:write-attribute(name=default-slsb-instance-pool, value=new-pool)  {"outcome" => "success"}

在这里,我们将default-slsb-instance-pool设置为我们先前创建的“ new-pool”。 现在,standalone-preview.xml文件将如下所示:

<session-bean>  <stateless>  <bean-instance-pool-ref pool-name="new-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

JBoss AS 7 EJB3池配置相关推荐

  1. jboss配置ejb容器_JBoss AS 7 EJB3池配置

    jboss配置ejb容器 现在已经发布了AS 7.0.1,下面让我们看看有哪些新的EJB3功能可用. 就像我在上一篇文章中提到的那样 ,AS 7.0.1现在允许您为无状态会话bean和MDB配置池. ...

  2. java ejb3.0_初识EJB3.0 ---配置与运行篇

    本文将不涉及EJB3.0的设计以及编码. 主要内容是关于JBOSS下EJB3.0的第一个例子的配置与运行. 首先下载JBOSS4,并安装成功.目前JBOSS提供的ejb3有2种版本,一种是Embedd ...

  3. 什么?用@Async会内存溢出?看看你的线程池配置了没!

    上一篇我们介绍了如何使用@Async注解来创建异步任务,我可以用这种方法来实现一些并发操作,以加速任务的执行效率.但是,如果只是如前文那样直接简单的创建来使用,可能还是会碰到一些问题.存在有什么问题呢 ...

  4. Hibernate连接池配置实例

    Hibernate支持第三方的连接池,官方推荐的连接池是C3P0,Proxool,以及DBCP.在Hibernate连接池配置时需要注意的有三点: 一.Apche的DBCP在Hibernate2中受支 ...

  5. 性能优化之数据库和数据源连接池配置

    什么?!数据库连接拿不到? 今天在公司对系统进行压测,由于我的sit和dev和uat环境都是用的用的是一个数据库服务器,我让用户在的sit进行压测,分别是单线程测试,并发测试,但是用户一开始测,我的三 ...

  6. Tomcat5+Mssql server 2000数据库连接池配置

    Tomcat相信大家已经很熟悉了,作为一种免费而强大的java web server,得到了很多java爱好者的青睐,最新版本的tomcat5支持servlet2.4和jsp2.0,今天我将采用Tom ...

  7. Spring+Hibernate+c3p0连接池配置-连接无法释放的问题解决方案

     1.Spring+Hibernate+c3p0连接池配置: <?xml version="1.0" encoding="UTF-8"?> < ...

  8. Tomcat连接池配置

    1.  Tomcat c3p0连接池配置 (1)  修改conf/server.xml,在<GlobalNamingResources>标签内添加如下内容 <Resource nam ...

  9. Java多线程之线程池配置合理线程数

    Java多线程之线程池配置合理线程数 目录 代码查看公司服务器或阿里云是几核的 合理线程数配置之CPU密集型 合理线程数配置之IO密集型 1. 代码查看公司服务器或阿里云是几核的 要合理配置线程数首先 ...

最新文章

  1. web前端开发怎么学,web教程资源
  2. boost::mp11::mp_invoke_q相关用法的测试程序
  3. Android应用Push至设备system目录
  4. 第一次玩,试试手(标题)
  5. 【剑指offer】面试题32:从上到下打印二叉树(java)
  6. 安装mariadb---通用二进制格式安装
  7. C# 程序异常关闭时的捕获
  8. oracle 删除xml记录,Oracle之xml的增删改查操作
  9. 再谈代码生成器,xml+xslt,结合扩展,用上设计模式。
  10. 义务劳动: CISA的翻译
  11. Kotlin从入门到放弃(三)——协程
  12. 算法:Valid Parentheses(有效的括号)
  13. postgresql 查询sql字符串拼接相关
  14. kali linux 源码免杀,shellcode超级免杀
  15. CFSSL: 证书管理工具:4:生成Kubernetes集群证书
  16. VLC接收RTP的H264流串流成OGGT向HTTP发送,可以直接用HTML5播放
  17. 如何在Windows中将“显示桌面”图标移动到快速启动栏或任务栏
  18. js模仿打字效果的方法
  19. Day 1: 音标学习
  20. 原码一位乘、补码一位乘(校正法、布斯法)、补码两位乘

热门文章

  1. java流与文件——对象流和序列化
  2. JAVA 实现 JWT
  3. 代码注释掉还能执行_日志消息是可执行代码和注释
  4. web服务优化与健壮性改进_创建健壮的微服务架构所涉及的组件
  5. jvm jstat_使用jstat报告自定义JVM指标集
  6. spring可用于数据层吗_Spring XD用于数据提取
  7. spring 组件扫描_避免不必要的Spring配置组件扫描
  8. Tycoon:针对多种平台上的Java JIMAGE的勒索软件
  9. 通过委托增强Spring数据存储库
  10. guava的正确引入方式_使用Guava的AbstractInvocationHandler正确完成代理