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

jboss配置ejb容器

现在已经发布了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中设置)为止。 每个池都有一个唯一的名称。 上面的配置显示了两个名为“ 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池

相关文章 :

翻译自: https://www.javacodegeeks.com/2011/11/jboss-as-7-ejb3-pools-configuration.html

jboss配置ejb容器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值