http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/examples/javaee/jca-remote/server/standalone/configuration/standalone-example.xml ---------------------------------------------------------------------- diff --git a/examples/javaee/jca-remote/server/standalone/configuration/standalone-example.xml b/examples/javaee/jca-remote/server/standalone/configuration/standalone-example.xml new file mode 100644 index 0000000..f603810 --- /dev/null +++ b/examples/javaee/jca-remote/server/standalone/configuration/standalone-example.xml @@ -0,0 +1,496 @@ +<?xml version='1.0' encoding='UTF-8'?> + +<server xmlns="urn:jboss:domain:2.0"> + <extensions> + <extension module="org.jboss.as.clustering.infinispan"/> + <extension module="org.jboss.as.connector"/> + <extension module="org.jboss.as.deployment-scanner"/> + <extension module="org.jboss.as.ee"/> + <extension module="org.jboss.as.ejb3"/> + <extension module="org.jboss.as.jacorb"/> + <extension module="org.jboss.as.jaxrs"/> + <extension module="org.jboss.as.jdr"/> + <extension module="org.jboss.as.jmx"/> + <extension module="org.jboss.as.jpa"/> + <extension module="org.jboss.as.jsf"/> + <extension module="org.jboss.as.jsr77"/> + <extension module="org.jboss.as.logging"/> + <extension module="org.jboss.as.mail"/> + <extension module="org.jboss.as.messaging"/> + <extension module="org.jboss.as.naming"/> + <extension module="org.jboss.as.pojo"/> + <extension module="org.jboss.as.remoting"/> + <extension module="org.jboss.as.sar"/> + <extension module="org.jboss.as.security"/> + <extension module="org.jboss.as.threads"/> + <extension module="org.jboss.as.transactions"/> + <extension module="org.jboss.as.webservices"/> + <extension module="org.jboss.as.weld"/> + <extension module="org.wildfly.extension.batch"/> + <extension module="org.wildfly.extension.io"/> + <extension module="org.wildfly.extension.undertow"/> + </extensions> + <management> + <security-realms> + <security-realm name="ManagementRealm"> + <authentication> + <local default-user="$local"/> + <properties path="mgmt-users.properties" relative-to="jboss.server.config.dir"/> + </authentication> + <authorization map-groups-to-roles="false"> + <properties path="mgmt-groups.properties" relative-to="jboss.server.config.dir"/> + </authorization> + </security-realm> + <security-realm name="ApplicationRealm"> + <authentication> + <local default-user="$local" allowed-users="*"/> + <properties path="application-users.properties" relative-to="jboss.server.config.dir"/> + </authentication> + <authorization> + <properties path="application-roles.properties" relative-to="jboss.server.config.dir"/> + </authorization> + </security-realm> + </security-realms> + <audit-log> + <formatters> + <json-formatter name="json-formatter"/> + </formatters> + <handlers> + <file-handler name="file" formatter="json-formatter" relative-to="jboss.server.data.dir" path="audit-log.log"/> + </handlers> + <logger log-boot="true" log-read-only="false" enabled="false"> + <handlers> + <handler name="file"/> + </handlers> + </logger> + </audit-log> + <management-interfaces> + <http-interface security-realm="ManagementRealm" http-upgrade-enabled="true"> + <socket-binding http="management-http"/> + </http-interface> + </management-interfaces> + <access-control provider="simple"> + <role-mapping> + <role name="SuperUser"> + <include> + <user name="$local"/> + </include> + </role> + </role-mapping> + </access-control> + </management> + <profile> + <subsystem xmlns="urn:jboss:domain:logging:2.0"> + <console-handler name="CONSOLE"> + <level name="INFO"/> + <formatter> + <named-formatter name="COLOR-PATTERN"/> + </formatter> + </console-handler> + <periodic-rotating-file-handler name="FILE" autoflush="true"> + <formatter> + <named-formatter name="PATTERN"/> + </formatter> + <file relative-to="jboss.server.log.dir" path="server.log"/> + <suffix value=".yyyy-MM-dd"/> + <append value="true"/> + </periodic-rotating-file-handler> + <logger category="com.arjuna"> + <level name="WARN"/> + </logger> + <logger category="org.apache.tomcat.util.modeler"> + <level name="WARN"/> + </logger> + <logger category="org.jboss.as.config"> + <level name="DEBUG"/> + </logger> + <logger category="sun.rmi"> + <level name="WARN"/> + </logger> + <logger category="jacorb"> + <level name="WARN"/> + </logger> + <logger category="jacorb.config"> + <level name="ERROR"/> + </logger> + <root-logger> + <level name="INFO"/> + <handlers> + <handler name="CONSOLE"/> + <handler name="FILE"/> + </handlers> + </root-logger> + <formatter name="PATTERN"> + <pattern-formatter pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/> + </formatter> + <formatter name="COLOR-PATTERN"> + <pattern-formatter pattern="%K{level}%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/> + </formatter> + </subsystem> + <subsystem xmlns="urn:jboss:domain:batch:1.0"> + <job-repository> + <in-memory/> + </job-repository> + <thread-pool> + <max-threads count="10"/> + <keepalive-time time="100" unit="milliseconds"/> + </thread-pool> + </subsystem> + <subsystem xmlns="urn:jboss:domain:datasources:2.0"> + <datasources> + <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true"> + <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url> + <driver>h2</driver> + <security> + <user-name>sa</user-name> + <password>sa</password> + </security> + </datasource> + <drivers> + <driver name="h2" module="com.h2database.h2"> + <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class> + </driver> + </drivers> + </datasources> + </subsystem> + <subsystem xmlns="urn:jboss:domain:deployment-scanner:2.0"> + <deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-interval="5000" runtime-failure-causes-rollback="${jboss.deployment.scanner.rollback.on.failure:false}"/> + </subsystem> + <subsystem xmlns="urn:jboss:domain:ee:2.0"> + <spec-descriptor-property-replacement>false</spec-descriptor-property-replacement> + <jboss-descriptor-property-replacement>true</jboss-descriptor-property-replacement> + <annotation-property-replacement>false</annotation-property-replacement> + <concurrent> + <context-services> + <context-service name="default" jndi-name="java:jboss/ee/concurrency/context/default" use-transaction-setup-provider="true"/> + </context-services> + <managed-executor-services> + <managed-executor-service name="default" jndi-name="java:jboss/ee/concurrency/executor/default" context-service="default" hung-task-threshold="60000" core-threads="5" max-threads="25" keepalive-time="5000"/> + </managed-executor-services> + <managed-scheduled-executor-services> + <managed-scheduled-executor-service name="default" jndi-name="java:jboss/ee/concurrency/scheduler/default" context-service="default" hung-task-threshold="60000" core-threads="2" keepalive-time="3000"/> + </managed-scheduled-executor-services> + <managed-thread-factories> + <managed-thread-factory name="default" jndi-name="java:jboss/ee/concurrency/factory/default" context-service="default"/> + </managed-thread-factories> + </concurrent> + <default-bindings context-service="java:jboss/ee/concurrency/context/default" datasource="java:jboss/datasources/ExampleDS" jms-connection-factory="java:jboss/DefaultJMSConnectionFactory" managed-executor-service="java:jboss/ee/concurrency/executor/default" managed-scheduled-executor-service="java:jboss/ee/concurrency/scheduler/default" managed-thread-factory="java:jboss/ee/concurrency/factory/default"/> + </subsystem> + <subsystem xmlns="urn:jboss:domain:ejb3:2.0"> + <session-bean> + <stateful default-access-timeout="5000" cache-ref="simple" passivation-disabled-cache-ref="simple"/> + <singleton default-access-timeout="5000"/> + </session-bean> + <mdb> + <resource-adapter-ref resource-adapter-name="${ejb.resource-adapter-name:hornetq-ra.rar}"/> + <bean-instance-pool-ref pool-name="mdb-strict-max-pool"/> + </mdb> + <pools> + <bean-instance-pools> + <!-- A sample strict max pool configuration --> + <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> + <caches> + <cache name="simple"/> + <cache name="distributable" aliases="passivating clustered" passivation-store-ref="infinispan"/> + </caches> + <passivation-stores> + <passivation-store name="infinispan" cache-container="ejb" max-size="10000"/> + </passivation-stores> + <async thread-pool-name="default"/> + <timer-service thread-pool-name="default" default-data-store="default-file-store"> + <data-stores> + <file-data-store name="default-file-store" path="timer-service-data" relative-to="jboss.server.data.dir"/> + </data-stores> + </timer-service> + <remote connector-ref="http-remoting-connector" thread-pool-name="default"/> + <thread-pools> + <thread-pool name="default"> + <max-threads count="10"/> + <keepalive-time time="100" unit="milliseconds"/> + </thread-pool> + </thread-pools> + <iiop enable-by-default="false" use-qualified-name="false"/> + <default-security-domain value="other"/> + <default-missing-method-permissions-deny-access value="true"/> + </subsystem> + <subsystem xmlns="urn:jboss:domain:io:1.0"> + <worker name="default" io-threads="3"/> + <buffer-pool name="default" buffer-size="16384" buffers-per-slice="128"/> + </subsystem> + <subsystem xmlns="urn:jboss:domain:infinispan:2.0"> + <cache-container name="web" default-cache="passivation" module="org.wildfly.clustering.web.infinispan"> + <local-cache name="passivation" batching="true"> + <file-store passivation="true" purge="false"/> + </local-cache> + <local-cache name="persistent" batching="true"> + <file-store passivation="false" purge="false"/> + </local-cache> + </cache-container> + <cache-container name="ejb" aliases="sfsb" default-cache="passivation" module="org.wildfly.clustering.ejb.infinispan"> + <local-cache name="passivation" batching="true"> + <file-store passivation="true" purge="false"/> + </local-cache> + <local-cache name="persistent" batching="true"> + <file-store passivation="false" purge="false"/> + </local-cache> + </cache-container> + <cache-container name="hibernate" default-cache="local-query" module="org.hibernate"> + <local-cache name="entity"> + <transaction mode="NON_XA"/> + <eviction strategy="LRU" max-entries="10000"/> + <expiration max-idle="100000"/> + </local-cache> + <local-cache name="local-query"> + <transaction mode="NONE"/> + <eviction strategy="LRU" max-entries="10000"/> + <expiration max-idle="100000"/> + </local-cache> + <local-cache name="timestamps"> + <transaction mode="NONE"/> + <eviction strategy="NONE"/> + </local-cache> + </cache-container> + </subsystem> + <subsystem xmlns="urn:jboss:domain:jacorb:1.3"> + <orb socket-binding="jacorb" ssl-socket-binding="jacorb-ssl"> + <initializers transactions="spec" security="identity"/> + </orb> + </subsystem> + <subsystem xmlns="urn:jboss:domain:jaxrs:1.0"/> + <subsystem xmlns="urn:jboss:domain:jca:2.0"> + <archive-validation enabled="true" fail-on-error="true" fail-on-warn="false"/> + <bean-validation enabled="true"/> + <default-workmanager> + <short-running-threads> + <core-threads count="50"/> + <queue-length count="50"/> + <max-threads count="50"/> + <keepalive-time time="10" unit="seconds"/> + </short-running-threads> + <long-running-threads> + <core-threads count="50"/> + <queue-length count="50"/> + <max-threads count="50"/> + <keepalive-time time="10" unit="seconds"/> + </long-running-threads> + </default-workmanager> + <cached-connection-manager/> + </subsystem> + <subsystem xmlns="urn:jboss:domain:jdr:1.0"/> + <subsystem xmlns="urn:jboss:domain:jmx:1.3"> + <expose-resolved-model/> + <expose-expression-model/> + <remoting-connector/> + </subsystem> + <subsystem xmlns="urn:jboss:domain:jpa:1.1"> + <jpa default-datasource="" default-extended-persistence-inheritance="DEEP"/> + </subsystem> + <subsystem xmlns="urn:jboss:domain:jsf:1.0"/> + <subsystem xmlns="urn:jboss:domain:jsr77:1.0"/> + <subsystem xmlns="urn:jboss:domain:mail:2.0"> + <mail-session name="default" jndi-name="java:jboss/mail/Default"> + <smtp-server outbound-socket-binding-ref="mail-smtp"/> + </mail-session> + </subsystem> + <subsystem xmlns="urn:jboss:domain:messaging:2.0"> + <hornetq-server> + <persistence-enabled>true</persistence-enabled> + <journal-file-size>102400</journal-file-size> + <journal-min-files>2</journal-min-files> + <connectors> + <http-connector name="http-connector" socket-binding="http"> + <param key="http-upgrade-endpoint" value="http-acceptor"/> + </http-connector> + <http-connector name="http-connector-throughput" socket-binding="http"> + <param key="http-upgrade-endpoint" value="http-acceptor-throughput"/> + <param key="batch-delay" value="50"/> + </http-connector> + <in-vm-connector name="in-vm" server-id="0"/> + <http-connector name="remote-http-connector" socket-binding="remote-messaging"/> + </connectors> + <acceptors> + <http-acceptor name="http-acceptor" http-listener="default"/> + <http-acceptor name="http-acceptor-throughput" http-listener="default"> + <param key="batch-delay" value="50"/> + <param key="direct-deliver" value="false"/> + </http-acceptor> + <in-vm-acceptor name="in-vm" server-id="0"/> + </acceptors> + <security-settings> + <security-setting match="#"> + <permission type="send" roles="guest"/> + <permission type="consume" roles="guest"/> + <permission type="createNonDurableQueue" roles="guest"/> + <permission type="deleteNonDurableQueue" roles="guest"/> + </security-setting> + </security-settings> + <address-settings> + <!--default for catch all--> + <address-setting match="#"> + <dead-letter-address>jms.queue.DLQ</dead-letter-address> + <expiry-address>jms.queue.ExpiryQueue</expiry-address> + <redelivery-delay>0</redelivery-delay> + <max-size-bytes>10485760</max-size-bytes> + <address-full-policy>PAGE</address-full-policy> + <page-size-bytes>2097152</page-size-bytes> + <message-counter-history-day-limit>10</message-counter-history-day-limit> + </address-setting> + </address-settings> + <jms-connection-factories> + <connection-factory name="InVmConnectionFactory"> + <connectors> + <connector-ref connector-name="in-vm"/> + </connectors> + <entries> + <entry name="java:/ConnectionFactory"/> + </entries> + </connection-factory> + <connection-factory name="RemoteConnectionFactory"> + <connectors> + <connector-ref connector-name="http-connector"/> + </connectors> + <entries> + <entry name="java:jboss/exported/jms/RemoteConnectionFactory"/> + </entries> + </connection-factory> + <pooled-connection-factory name="hornetq-ra"> + <transaction mode="xa"/> + <connectors> + <connector-ref connector-name="in-vm"/> + </connectors> + <entries> + <entry name="java:/JmsXA"/> + <!-- Global JNDI entry used to provide a default JMS Connection factory to EE application --> + <entry name="java:jboss/DefaultJMSConnectionFactory"/> + </entries> + </pooled-connection-factory> + <pooled-connection-factory name="hornetq-ra-remote"> + <transaction mode="xa"/> + <user>guest</user> + <password>password</password> + <connectors> + <connector-ref connector-name="remote-http-connector"/> + </connectors> + <entries> + <entry name="java:/RemoteJmsXA"/> + </entries> + </pooled-connection-factory> + </jms-connection-factories> + </hornetq-server> + </subsystem> + <subsystem xmlns="urn:jboss:domain:naming:2.0"> + <remote-naming/> + </subsystem> + <subsystem xmlns="urn:jboss:domain:pojo:1.0"/> + <subsystem xmlns="urn:jboss:domain:remoting:2.0"> + <endpoint worker="default"/> + <http-connector name="http-remoting-connector" connector-ref="default" security-realm="ApplicationRealm"/> + </subsystem> + <subsystem xmlns="urn:jboss:domain:resource-adapters:2.0"/> + <subsystem xmlns="urn:jboss:domain:sar:1.0"/> + <subsystem xmlns="urn:jboss:domain:security:1.2"> + <security-domains> + <security-domain name="other" cache-type="default"> + <authentication> + <login-module code="Remoting" flag="optional"> + <module-option name="password-stacking" value="useFirstPass"/> + </login-module> + <login-module code="RealmDirect" flag="required"> + <module-option name="password-stacking" value="useFirstPass"/> + </login-module> + </authentication> + </security-domain> + <security-domain name="jboss-web-policy" cache-type="default"> + <authorization> + <policy-module code="Delegating" flag="required"/> + </authorization> + </security-domain> + <security-domain name="jboss-ejb-policy" cache-type="default"> + <authorization> + <policy-module code="Delegating" flag="required"/> + </authorization> + </security-domain> + </security-domains> + </subsystem> + <subsystem xmlns="urn:jboss:domain:threads:1.1"/> + <subsystem xmlns="urn:jboss:domain:transactions:2.0"> + <core-environment> + <process-id> + <uuid/> + </process-id> + </core-environment> + <recovery-environment socket-binding="txn-recovery-environment" status-socket-binding="txn-status-manager"/> + <coordinator-environment default-timeout="300"/> + </subsystem> + <subsystem xmlns="urn:jboss:domain:undertow:1.0"> + <buffer-caches> + <buffer-cache name="default" buffer-size="1024" buffers-per-region="1024" max-regions="10"/> + </buffer-caches> + <server name="default-server"> + <http-listener name="default" socket-binding="http"/> + <host name="default-host" alias="localhost"> + <location name="/" handler="welcome-content"/> + <filter-ref name="server-header"/> + <filter-ref name="x-powered-by-header"/> + </host> + </server> + <servlet-container name="default" default-buffer-cache="default" stack-trace-on-error="local-only"> + <jsp-config/> + </servlet-container> + <handlers> + <file name="welcome-content" path="${jboss.home.dir}/welcome-content" directory-listing="true"/> + </handlers> + <filters> + <response-header name="server-header" header-name="Server" header-value="Wildfly 8"/> + <response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow 1"/> + </filters> + </subsystem> + <subsystem xmlns="urn:jboss:domain:webservices:1.2"> + <modify-wsdl-address>true</modify-wsdl-address> + <wsdl-host>${jboss.bind.address:127.0.0.1}</wsdl-host> + <endpoint-config name="Standard-Endpoint-Config"/> + <endpoint-config name="Recording-Endpoint-Config"> + <pre-handler-chain name="recording-handlers" protocol-bindings="##SOAP11_HTTP ##SOAP11_HTTP_MTOM ##SOAP12_HTTP ##SOAP12_HTTP_MTOM"> + <handler name="RecordingHandler" class="org.jboss.ws.common.invocation.RecordingServerHandler"/> + </pre-handler-chain> + </endpoint-config> + <client-config name="Standard-Client-Config"/> + </subsystem> + <subsystem xmlns="urn:jboss:domain:weld:2.0"/> + </profile> + <interfaces> + <interface name="management"> + <inet-address value="${jboss.bind.address.management:127.0.0.1}"/> + </interface> + <interface name="public"> + <inet-address value="${jboss.bind.address:127.0.0.1}"/> + </interface> + <!-- TODO - only show this if the jacorb subsystem is added --> + <interface name="unsecure"> + <!-- + ~ Used for IIOP sockets in the standard configuration. + ~ To secure JacORB you need to setup SSL + --> + <inet-address value="${jboss.bind.address.unsecure:127.0.0.1}"/> + </interface> + </interfaces> + <socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}"> + <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/> + <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/> + <socket-binding name="ajp" port="${jboss.ajp.port:8009}"/> + <socket-binding name="http" port="${jboss.http.port:8080}"/> + <socket-binding name="https" port="${jboss.https.port:8443}"/> + <socket-binding name="jacorb" interface="unsecure" port="3528"/> + <socket-binding name="jacorb-ssl" interface="unsecure" port="3529"/> + <socket-binding name="messaging-group" port="0" multicast-address="${jboss.messaging.group.address:231.7.7.7}" multicast-port="${jboss.messaging.group.port:9876}"/> + <socket-binding name="remote-messaging" port="8180" fixed-port="true"/> + <socket-binding name="txn-recovery-environment" port="4712"/> + <socket-binding name="txn-status-manager" port="4713"/> + <outbound-socket-binding name="mail-smtp"> + <remote-destination host="localhost" port="25"/> + </outbound-socket-binding> + </socket-binding-group> +</server>
http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/examples/javaee/jca-remote/server/standalone/configuration/standalone-example2.xml ---------------------------------------------------------------------- diff --git a/examples/javaee/jca-remote/server/standalone/configuration/standalone-example2.xml b/examples/javaee/jca-remote/server/standalone/configuration/standalone-example2.xml new file mode 100644 index 0000000..2885355 --- /dev/null +++ b/examples/javaee/jca-remote/server/standalone/configuration/standalone-example2.xml @@ -0,0 +1,493 @@ +<?xml version='1.0' encoding='UTF-8'?> + +<server xmlns="urn:jboss:domain:2.0"> + <extensions> + <extension module="org.jboss.as.clustering.infinispan"/> + <extension module="org.jboss.as.connector"/> + <extension module="org.jboss.as.deployment-scanner"/> + <extension module="org.jboss.as.ee"/> + <extension module="org.jboss.as.ejb3"/> + <extension module="org.jboss.as.jacorb"/> + <extension module="org.jboss.as.jaxrs"/> + <extension module="org.jboss.as.jdr"/> + <extension module="org.jboss.as.jmx"/> + <extension module="org.jboss.as.jpa"/> + <extension module="org.jboss.as.jsf"/> + <extension module="org.jboss.as.jsr77"/> + <extension module="org.jboss.as.logging"/> + <extension module="org.jboss.as.mail"/> + <extension module="org.jboss.as.messaging"/> + <extension module="org.jboss.as.naming"/> + <extension module="org.jboss.as.pojo"/> + <extension module="org.jboss.as.remoting"/> + <extension module="org.jboss.as.sar"/> + <extension module="org.jboss.as.security"/> + <extension module="org.jboss.as.threads"/> + <extension module="org.jboss.as.transactions"/> + <extension module="org.jboss.as.webservices"/> + <extension module="org.jboss.as.weld"/> + <extension module="org.wildfly.extension.batch"/> + <extension module="org.wildfly.extension.io"/> + <extension module="org.wildfly.extension.undertow"/> + </extensions> + <management> + <security-realms> + <security-realm name="ManagementRealm"> + <authentication> + <local default-user="$local"/> + <properties path="mgmt-users.properties" relative-to="jboss.server.config.dir"/> + </authentication> + <authorization map-groups-to-roles="false"> + <properties path="mgmt-groups.properties" relative-to="jboss.server.config.dir"/> + </authorization> + </security-realm> + <security-realm name="ApplicationRealm"> + <authentication> + <local default-user="$local" allowed-users="*"/> + <properties path="application-users.properties" relative-to="jboss.server.config.dir"/> + </authentication> + <authorization> + <properties path="application-roles.properties" relative-to="jboss.server.config.dir"/> + </authorization> + </security-realm> + </security-realms> + <audit-log> + <formatters> + <json-formatter name="json-formatter"/> + </formatters> + <handlers> + <file-handler name="file" formatter="json-formatter" relative-to="jboss.server.data.dir" path="audit-log.log"/> + </handlers> + <logger log-boot="true" log-read-only="false" enabled="false"> + <handlers> + <handler name="file"/> + </handlers> + </logger> + </audit-log> + <management-interfaces> + <http-interface security-realm="ManagementRealm" http-upgrade-enabled="true"> + <socket-binding http="management-http"/> + </http-interface> + </management-interfaces> + <access-control provider="simple"> + <role-mapping> + <role name="SuperUser"> + <include> + <user name="$local"/> + </include> + </role> + </role-mapping> + </access-control> + </management> + <profile> + <subsystem xmlns="urn:jboss:domain:logging:2.0"> + <console-handler name="CONSOLE"> + <level name="INFO"/> + <formatter> + <named-formatter name="COLOR-PATTERN"/> + </formatter> + </console-handler> + <periodic-rotating-file-handler name="FILE" autoflush="true"> + <formatter> + <named-formatter name="PATTERN"/> + </formatter> + <file relative-to="jboss.server.log.dir" path="server.log"/> + <suffix value=".yyyy-MM-dd"/> + <append value="true"/> + </periodic-rotating-file-handler> + <logger category="com.arjuna"> + <level name="WARN"/> + </logger> + <logger category="org.apache.tomcat.util.modeler"> + <level name="WARN"/> + </logger> + <logger category="org.jboss.as.config"> + <level name="DEBUG"/> + </logger> + <logger category="sun.rmi"> + <level name="WARN"/> + </logger> + <logger category="jacorb"> + <level name="WARN"/> + </logger> + <logger category="jacorb.config"> + <level name="ERROR"/> + </logger> + <root-logger> + <level name="INFO"/> + <handlers> + <handler name="CONSOLE"/> + <handler name="FILE"/> + </handlers> + </root-logger> + <formatter name="PATTERN"> + <pattern-formatter pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/> + </formatter> + <formatter name="COLOR-PATTERN"> + <pattern-formatter pattern="%K{level}%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/> + </formatter> + </subsystem> + <subsystem xmlns="urn:jboss:domain:batch:1.0"> + <job-repository> + <in-memory/> + </job-repository> + <thread-pool> + <max-threads count="10"/> + <keepalive-time time="100" unit="milliseconds"/> + </thread-pool> + </subsystem> + <subsystem xmlns="urn:jboss:domain:datasources:2.0"> + <datasources> + <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true"> + <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url> + <driver>h2</driver> + <security> + <user-name>sa</user-name> + <password>sa</password> + </security> + </datasource> + <drivers> + <driver name="h2" module="com.h2database.h2"> + <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class> + </driver> + </drivers> + </datasources> + </subsystem> + <subsystem xmlns="urn:jboss:domain:deployment-scanner:2.0"> + <deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-interval="5000" runtime-failure-causes-rollback="${jboss.deployment.scanner.rollback.on.failure:false}"/> + </subsystem> + <subsystem xmlns="urn:jboss:domain:ee:2.0"> + <spec-descriptor-property-replacement>false</spec-descriptor-property-replacement> + <jboss-descriptor-property-replacement>true</jboss-descriptor-property-replacement> + <annotation-property-replacement>false</annotation-property-replacement> + <concurrent> + <context-services> + <context-service name="default" jndi-name="java:jboss/ee/concurrency/context/default" use-transaction-setup-provider="true"/> + </context-services> + <managed-executor-services> + <managed-executor-service name="default" jndi-name="java:jboss/ee/concurrency/executor/default" context-service="default" hung-task-threshold="60000" core-threads="5" max-threads="25" keepalive-time="5000"/> + </managed-executor-services> + <managed-scheduled-executor-services> + <managed-scheduled-executor-service name="default" jndi-name="java:jboss/ee/concurrency/scheduler/default" context-service="default" hung-task-threshold="60000" core-threads="2" keepalive-time="3000"/> + </managed-scheduled-executor-services> + <managed-thread-factories> + <managed-thread-factory name="default" jndi-name="java:jboss/ee/concurrency/factory/default" context-service="default"/> + </managed-thread-factories> + </concurrent> + <default-bindings context-service="java:jboss/ee/concurrency/context/default" datasource="java:jboss/datasources/ExampleDS" jms-connection-factory="java:jboss/DefaultJMSConnectionFactory" managed-executor-service="java:jboss/ee/concurrency/executor/default" managed-scheduled-executor-service="java:jboss/ee/concurrency/scheduler/default" managed-thread-factory="java:jboss/ee/concurrency/factory/default"/> + </subsystem> + <subsystem xmlns="urn:jboss:domain:ejb3:2.0"> + <session-bean> + <stateful default-access-timeout="5000" cache-ref="simple" passivation-disabled-cache-ref="simple"/> + <singleton default-access-timeout="5000"/> + </session-bean> + <mdb> + <resource-adapter-ref resource-adapter-name="${ejb.resource-adapter-name:hornetq-ra.rar}"/> + <bean-instance-pool-ref pool-name="mdb-strict-max-pool"/> + </mdb> + <pools> + <bean-instance-pools> + <!-- A sample strict max pool configuration --> + <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> + <caches> + <cache name="simple"/> + <cache name="distributable" aliases="passivating clustered" passivation-store-ref="infinispan"/> + </caches> + <passivation-stores> + <passivation-store name="infinispan" cache-container="ejb" max-size="10000"/> + </passivation-stores> + <async thread-pool-name="default"/> + <timer-service thread-pool-name="default" default-data-store="default-file-store"> + <data-stores> + <file-data-store name="default-file-store" path="timer-service-data" relative-to="jboss.server.data.dir"/> + </data-stores> + </timer-service> + <remote connector-ref="http-remoting-connector" thread-pool-name="default"/> + <thread-pools> + <thread-pool name="default"> + <max-threads count="10"/> + <keepalive-time time="100" unit="milliseconds"/> + </thread-pool> + </thread-pools> + <iiop enable-by-default="false" use-qualified-name="false"/> + <default-security-domain value="other"/> + <default-missing-method-permissions-deny-access value="true"/> + </subsystem> + <subsystem xmlns="urn:jboss:domain:io:1.0"> + <worker name="default" io-threads="3"/> + <buffer-pool name="default" buffer-size="16384" buffers-per-slice="128"/> + </subsystem> + <subsystem xmlns="urn:jboss:domain:infinispan:2.0"> + <cache-container name="web" default-cache="passivation" module="org.wildfly.clustering.web.infinispan"> + <local-cache name="passivation" batching="true"> + <file-store passivation="true" purge="false"/> + </local-cache> + <local-cache name="persistent" batching="true"> + <file-store passivation="false" purge="false"/> + </local-cache> + </cache-container> + <cache-container name="ejb" aliases="sfsb" default-cache="passivation" module="org.wildfly.clustering.ejb.infinispan"> + <local-cache name="passivation" batching="true"> + <file-store passivation="true" purge="false"/> + </local-cache> + <local-cache name="persistent" batching="true"> + <file-store passivation="false" purge="false"/> + </local-cache> + </cache-container> + <cache-container name="hibernate" default-cache="local-query" module="org.hibernate"> + <local-cache name="entity"> + <transaction mode="NON_XA"/> + <eviction strategy="LRU" max-entries="10000"/> + <expiration max-idle="100000"/> + </local-cache> + <local-cache name="local-query"> + <transaction mode="NONE"/> + <eviction strategy="LRU" max-entries="10000"/> + <expiration max-idle="100000"/> + </local-cache> + <local-cache name="timestamps"> + <transaction mode="NONE"/> + <eviction strategy="NONE"/> + </local-cache> + </cache-container> + </subsystem> + <subsystem xmlns="urn:jboss:domain:jacorb:1.3"> + <orb socket-binding="jacorb" ssl-socket-binding="jacorb-ssl"> + <initializers transactions="spec" security="identity"/> + </orb> + </subsystem> + <subsystem xmlns="urn:jboss:domain:jaxrs:1.0"/> + <subsystem xmlns="urn:jboss:domain:jca:2.0"> + <archive-validation enabled="true" fail-on-error="true" fail-on-warn="false"/> + <bean-validation enabled="true"/> + <default-workmanager> + <short-running-threads> + <core-threads count="50"/> + <queue-length count="50"/> + <max-threads count="50"/> + <keepalive-time time="10" unit="seconds"/> + </short-running-threads> + <long-running-threads> + <core-threads count="50"/> + <queue-length count="50"/> + <max-threads count="50"/> + <keepalive-time time="10" unit="seconds"/> + </long-running-threads> + </default-workmanager> + <cached-connection-manager/> + </subsystem> + <subsystem xmlns="urn:jboss:domain:jdr:1.0"/> + <subsystem xmlns="urn:jboss:domain:jmx:1.3"> + <expose-resolved-model/> + <expose-expression-model/> + <remoting-connector/> + </subsystem> + <subsystem xmlns="urn:jboss:domain:jpa:1.1"> + <jpa default-datasource="" default-extended-persistence-inheritance="DEEP"/> + </subsystem> + <subsystem xmlns="urn:jboss:domain:jsf:1.0"/> + <subsystem xmlns="urn:jboss:domain:jsr77:1.0"/> + <subsystem xmlns="urn:jboss:domain:mail:2.0"> + <mail-session name="default" jndi-name="java:jboss/mail/Default"> + <smtp-server outbound-socket-binding-ref="mail-smtp"/> + </mail-session> + </subsystem> + <subsystem xmlns="urn:jboss:domain:messaging:2.0"> + <hornetq-server> + <persistence-enabled>true</persistence-enabled> + <journal-file-size>102400</journal-file-size> + <journal-min-files>2</journal-min-files> + <connectors> + <http-connector name="http-connector" socket-binding="http"> + <param key="http-upgrade-endpoint" value="http-acceptor"/> + </http-connector> + <http-connector name="http-connector-throughput" socket-binding="http"> + <param key="http-upgrade-endpoint" value="http-acceptor-throughput"/> + <param key="batch-delay" value="50"/> + </http-connector> + <in-vm-connector name="in-vm" server-id="0"/> + </connectors> + <acceptors> + <http-acceptor name="http-acceptor" http-listener="default"/> + <http-acceptor name="http-acceptor-throughput" http-listener="default"> + <param key="batch-delay" value="50"/> + <param key="direct-deliver" value="false"/> + </http-acceptor> + <in-vm-acceptor name="in-vm" server-id="0"/> + </acceptors> + <security-settings> + <security-setting match="#"> + <permission type="send" roles="guest"/> + <permission type="consume" roles="guest"/> + <permission type="createNonDurableQueue" roles="guest"/> + <permission type="deleteNonDurableQueue" roles="guest"/> + </security-setting> + </security-settings> + <address-settings> + <!--default for catch all--> + <address-setting match="#"> + <dead-letter-address>jms.queue.DLQ</dead-letter-address> + <expiry-address>jms.queue.ExpiryQueue</expiry-address> + <redelivery-delay>0</redelivery-delay> + <max-size-bytes>10485760</max-size-bytes> + <address-full-policy>PAGE</address-full-policy> + <page-size-bytes>2097152</page-size-bytes> + <message-counter-history-day-limit>10</message-counter-history-day-limit> + </address-setting> + </address-settings> + <jms-connection-factories> + <connection-factory name="InVmConnectionFactory"> + <connectors> + <connector-ref connector-name="in-vm"/> + </connectors> + <entries> + <entry name="java:/ConnectionFactory"/> + </entries> + </connection-factory> + <connection-factory name="RemoteConnectionFactory"> + <connectors> + <connector-ref connector-name="http-connector"/> + </connectors> + <entries> + <entry name="java:jboss/exported/jms/RemoteConnectionFactory"/> + </entries> + </connection-factory> + <pooled-connection-factory name="hornetq-ra"> + <transaction mode="xa"/> + <connectors> + <connector-ref connector-name="in-vm"/> + </connectors> + <entries> + <entry name="java:/JmsXA"/> + <!-- Global JNDI entry used to provide a default JMS Connection factory to EE application --> + <entry name="java:jboss/DefaultJMSConnectionFactory"/> + </entries> + </pooled-connection-factory> + </jms-connection-factories> + <jms-destinations> + <jms-queue name="mdbQueue"> + <entry name="queue/mdbQueue"/> + <entry name="java:jboss/exported/queues/mdbQueue"/> + </jms-queue> + <jms-queue name="mdbReplyQueue"> + <entry name="queue/mdbReplyQueue"/> + <entry name="java:jboss/exported/queues/mdbReplyQueue"/> + </jms-queue> + </jms-destinations> + </hornetq-server> + </subsystem> + <subsystem xmlns="urn:jboss:domain:naming:2.0"> + <remote-naming/> + </subsystem> + <subsystem xmlns="urn:jboss:domain:pojo:1.0"/> + <subsystem xmlns="urn:jboss:domain:remoting:2.0"> + <endpoint worker="default"/> + <http-connector name="http-remoting-connector" connector-ref="default" security-realm="ApplicationRealm"/> + </subsystem> + <subsystem xmlns="urn:jboss:domain:resource-adapters:2.0"/> + <subsystem xmlns="urn:jboss:domain:sar:1.0"/> + <subsystem xmlns="urn:jboss:domain:security:1.2"> + <security-domains> + <security-domain name="other" cache-type="default"> + <authentication> + <login-module code="Remoting" flag="optional"> + <module-option name="password-stacking" value="useFirstPass"/> + </login-module> + <login-module code="RealmDirect" flag="required"> + <module-option name="password-stacking" value="useFirstPass"/> + </login-module> + </authentication> + </security-domain> + <security-domain name="jboss-web-policy" cache-type="default"> + <authorization> + <policy-module code="Delegating" flag="required"/> + </authorization> + </security-domain> + <security-domain name="jboss-ejb-policy" cache-type="default"> + <authorization> + <policy-module code="Delegating" flag="required"/> + </authorization> + </security-domain> + </security-domains> + </subsystem> + <subsystem xmlns="urn:jboss:domain:threads:1.1"/> + <subsystem xmlns="urn:jboss:domain:transactions:2.0"> + <core-environment> + <process-id> + <uuid/> + </process-id> + </core-environment> + <recovery-environment socket-binding="txn-recovery-environment" status-socket-binding="txn-status-manager"/> + <coordinator-environment default-timeout="300"/> + </subsystem> + <subsystem xmlns="urn:jboss:domain:undertow:1.0"> + <buffer-caches> + <buffer-cache name="default" buffer-size="1024" buffers-per-region="1024" max-regions="10"/> + </buffer-caches> + <server name="default-server"> + <http-listener name="default" socket-binding="http"/> + <host name="default-host" alias="localhost"> + <location name="/" handler="welcome-content"/> + <filter-ref name="server-header"/> + <filter-ref name="x-powered-by-header"/> + </host> + </server> + <servlet-container name="default" default-buffer-cache="default" stack-trace-on-error="local-only"> + <jsp-config/> + </servlet-container> + <handlers> + <file name="welcome-content" path="${jboss.home.dir}/welcome-content" directory-listing="true"/> + </handlers> + <filters> + <response-header name="server-header" header-name="Server" header-value="Wildfly 8"/> + <response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow 1"/> + </filters> + </subsystem> + <subsystem xmlns="urn:jboss:domain:webservices:1.2"> + <modify-wsdl-address>true</modify-wsdl-address> + <wsdl-host>${jboss.bind.address:127.0.0.1}</wsdl-host> + <endpoint-config name="Standard-Endpoint-Config"/> + <endpoint-config name="Recording-Endpoint-Config"> + <pre-handler-chain name="recording-handlers" protocol-bindings="##SOAP11_HTTP ##SOAP11_HTTP_MTOM ##SOAP12_HTTP ##SOAP12_HTTP_MTOM"> + <handler name="RecordingHandler" class="org.jboss.ws.common.invocation.RecordingServerHandler"/> + </pre-handler-chain> + </endpoint-config> + <client-config name="Standard-Client-Config"/> + </subsystem> + <subsystem xmlns="urn:jboss:domain:weld:2.0"/> + </profile> + <interfaces> + <interface name="management"> + <inet-address value="${jboss.bind.address.management:127.0.0.1}"/> + </interface> + <interface name="public"> + <inet-address value="${jboss.bind.address:127.0.0.1}"/> + </interface> + <!-- TODO - only show this if the jacorb subsystem is added --> + <interface name="unsecure"> + <!-- + ~ Used for IIOP sockets in the standard configuration. + ~ To secure JacORB you need to setup SSL + --> + <inet-address value="${jboss.bind.address.unsecure:127.0.0.1}"/> + </interface> + </interfaces> + <socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}"> + <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/> + <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/> + <socket-binding name="ajp" port="${jboss.ajp.port:8009}"/> + <socket-binding name="http" port="${jboss.http.port:8080}"/> + <socket-binding name="https" port="${jboss.https.port:8443}"/> + <socket-binding name="jacorb" interface="unsecure" port="3528"/> + <socket-binding name="jacorb-ssl" interface="unsecure" port="3529"/> + <socket-binding name="messaging-group" port="0" multicast-address="${jboss.messaging.group.address:231.7.7.7}" multicast-port="${jboss.messaging.group.port:9876}"/> + <socket-binding name="txn-recovery-environment" port="4712"/> + <socket-binding name="txn-status-manager" port="4713"/> + <outbound-socket-binding name="mail-smtp"> + <remote-destination host="localhost" port="25"/> + </outbound-socket-binding> + </socket-binding-group> +</server> http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/examples/javaee/jca-remote/src/main/java/org/hornetq/javaee/example/MDBRemoteServerClientExample.java ---------------------------------------------------------------------- diff --git a/examples/javaee/jca-remote/src/main/java/org/hornetq/javaee/example/MDBRemoteServerClientExample.java b/examples/javaee/jca-remote/src/main/java/org/hornetq/javaee/example/MDBRemoteServerClientExample.java new file mode 100644 index 0000000..1aad6ce --- /dev/null +++ b/examples/javaee/jca-remote/src/main/java/org/hornetq/javaee/example/MDBRemoteServerClientExample.java @@ -0,0 +1,99 @@ +/* + * Copyright 2005-2014 Red Hat, Inc. + * Red Hat licenses this file to you under the Apache License, version + * 2.0 (the "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. + */ +package org.hornetq.javaee.example; + + + +import javax.jms.Connection; +import javax.jms.ConnectionFactory; +import javax.jms.MessageConsumer; +import javax.jms.MessageProducer; +import javax.jms.Queue; +import javax.jms.Session; +import javax.jms.TextMessage; +import javax.naming.Context; +import javax.naming.InitialContext; +import java.util.Properties; + +/** + * + * MDB Remote & JCA Configuration Example. + * + * @author <a href="mailto:clebert.suco...@jboss.org">Clebert Suconic</a> + */ +public class MDBRemoteServerClientExample +{ + public static void main(String[] args) throws Exception + { + InitialContext initialContext = null; + Connection connection = null; + try + { + //Step 1. Create an initial context to perform the JNDI lookup. + final Properties env = new Properties(); + + env.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming"); + + env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory"); + + env.put(Context.PROVIDER_URL, "http-remoting://localhost:8180"); + + initialContext = new InitialContext(env); + + // Step 2. Look up the MDB's queue + Queue queue = (Queue) initialContext.lookup("queues/mdbQueue"); + + // Step 3. Look up a Connection Factory + ConnectionFactory cf = (ConnectionFactory) initialContext.lookup("jms/RemoteConnectionFactory"); + + //Step 4. Create a connection + connection = cf.createConnection("guest", "password"); + + //Step 5. Create a Session + Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); + + // Step 6. Create a message producer to send the message + MessageProducer producer = session.createProducer(queue); + + // Step 7. Create and send a message + producer.send(session.createTextMessage("a message")); + + // Step 15. Look up the reply queue + Queue replyQueue = (Queue) initialContext.lookup("queues/mdbReplyQueue"); + + // Step 16. Create a message consumer to receive the message + MessageConsumer consumer = session.createConsumer(replyQueue); + + // Step 17. Start the connection so delivery starts + connection.start(); + + // Step 18. Receive the text message + TextMessage textMessage = (TextMessage) consumer.receive(5000); + + System.out.println("Message received from reply queue. Message = \"" + textMessage.getText() + "\"" ); + + } + finally + { + // Step 19. Be sure to close our JMS resources! + if (initialContext != null) + { + initialContext.close(); + } + if (connection != null) + { + connection.close(); + } + } + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/examples/javaee/jca-remote/src/main/java/org/hornetq/javaee/example/server/MDBQueue.java ---------------------------------------------------------------------- diff --git a/examples/javaee/jca-remote/src/main/java/org/hornetq/javaee/example/server/MDBQueue.java b/examples/javaee/jca-remote/src/main/java/org/hornetq/javaee/example/server/MDBQueue.java new file mode 100644 index 0000000..b6e9aa6 --- /dev/null +++ b/examples/javaee/jca-remote/src/main/java/org/hornetq/javaee/example/server/MDBQueue.java @@ -0,0 +1,75 @@ +/* + * Copyright 2005-2014 Red Hat, Inc. + * Red Hat licenses this file to you under the Apache License, version + * 2.0 (the "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. + */ +package org.hornetq.javaee.example.server; + +import org.hornetq.api.jms.HornetQJMSClient; +import org.jboss.ejb3.annotation.ResourceAdapter; + +import javax.annotation.Resource; +import javax.ejb.ActivationConfigProperty; +import javax.ejb.MessageDriven; +import javax.jms.*; + +/** + * MDB that is connected to the remote queue. + * @author <a href="mailto:clebert.suco...@jboss.org">Clebert Suconic</a> + * @author <a href="mailto:andy.tay...@jboss.org">Andy Taylor</a> + * @author Justin Bertram + */ +@MessageDriven(name = "MDB_Queue", + activationConfig = + { + @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"), + @ActivationConfigProperty(propertyName = "destination", propertyValue = "mdbQueue"), + @ActivationConfigProperty(propertyName = "useJNDI", propertyValue = "false") + }) +@ResourceAdapter("hornetq-ra-remote.rar") +public class MDBQueue implements MessageListener +{ + @Resource(mappedName="java:/RemoteJmsXA") + private ConnectionFactory connectionFactory; + + public void onMessage(Message message) + { + try + { + // Step 8. Receive the text message + TextMessage tm = (TextMessage)message; + + String text = tm.getText(); + + // Step 9. look up the reply queue + Queue destQueue = HornetQJMSClient.createQueue("mdbReplyQueue"); + + // Step 10. Create a connection + Connection connection = connectionFactory.createConnection(); + + // Step 11. Create a session + Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); + + // Step 12. Create a message producer to send the message + MessageProducer producer = session.createProducer(destQueue); + + // Step 13. Create and send a reply text message + producer.send(session.createTextMessage("A reply message")); + + // Step 14. Return the connection back to the pool + connection.close(); + + } + catch (Exception e) + { + e.printStackTrace(); + } + } +} http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/examples/javaee/jca-remote/src/test/java/org/hornetq/javaee/examples/JCARemoteRunnerTest.java ---------------------------------------------------------------------- diff --git a/examples/javaee/jca-remote/src/test/java/org/hornetq/javaee/examples/JCARemoteRunnerTest.java b/examples/javaee/jca-remote/src/test/java/org/hornetq/javaee/examples/JCARemoteRunnerTest.java new file mode 100644 index 0000000..c610f03 --- /dev/null +++ b/examples/javaee/jca-remote/src/test/java/org/hornetq/javaee/examples/JCARemoteRunnerTest.java @@ -0,0 +1,86 @@ +/* + * Copyright 2005-2014 Red Hat, Inc. + * Red Hat licenses this file to you under the Apache License, version + * 2.0 (the "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package org.hornetq.javaee.examples; + +import org.hornetq.javaee.example.MDBRemoteServerClientExample; +import org.hornetq.javaee.example.server.MDBQueue; +import org.jboss.arquillian.container.test.api.ContainerController; +import org.jboss.arquillian.container.test.api.Deployer; +import org.jboss.arquillian.container.test.api.Deployment; +import org.jboss.arquillian.container.test.api.RunAsClient; +import org.jboss.arquillian.container.test.api.TargetsContainer; +import org.jboss.arquillian.junit.Arquillian; +import org.jboss.arquillian.junit.InSequence; +import org.jboss.arquillian.test.api.ArquillianResource; +import org.jboss.shrinkwrap.api.Archive; +import org.jboss.shrinkwrap.api.ShrinkWrap; +import org.jboss.shrinkwrap.api.spec.JavaArchive; +import org.jboss.shrinkwrap.api.spec.WebArchive; +import org.junit.Test; +import org.junit.runner.RunWith; + +/** + * @author <a href="mailto:andy.tay...@jboss.org">Andy Taylor</a> + */ +@RunAsClient +@RunWith(Arquillian.class) +public class JCARemoteRunnerTest +{ + @ArquillianResource + private ContainerController controller; + @ArquillianResource + private Deployer deployer; + + @Deployment(name = "deploy-0", managed = false) + @TargetsContainer("node-0") + public static Archive getDeployment() + { + final JavaArchive ejbJar = ShrinkWrap.create(JavaArchive.class, "mdb.jar"); + ejbJar.addClass(MDBQueue.class); + + final WebArchive war = ShrinkWrap.create(WebArchive.class, "test.war"); + war.addAsManifestResource("jboss-deployment-structure.xml", "jboss-deployment-structure.xml"); + war.addAsLibrary(ejbJar); + System.out.println(war.toString(true)); + return war; + } + + @Test + public void runExample() throws Exception + { + MDBRemoteServerClientExample.main(null); + } + + @Test + @InSequence(-1) + public void startServer() + { + System.out.println("*****************************************************************************************************************************************************************"); + controller.start("node-1"); + System.out.println("*****************************************************************************************************************************************************************"); + controller.start("node-0"); + System.out.println("*****************************************************************************************************************************************************************"); + deployer.deploy("deploy-0"); + } + + @Test + @InSequence(1) + public void stopServer() + { + deployer.undeploy("deploy-0"); + controller.stop("node-0"); + controller.stop("node-1"); + } + +} http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/examples/javaee/jca-remote/src/test/resources/arquillian.xml ---------------------------------------------------------------------- diff --git a/examples/javaee/jca-remote/src/test/resources/arquillian.xml b/examples/javaee/jca-remote/src/test/resources/arquillian.xml new file mode 100644 index 0000000..f1338ea --- /dev/null +++ b/examples/javaee/jca-remote/src/test/resources/arquillian.xml @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="UTF-8"?> +<arquillian xmlns="http://jboss.org/schema/arquillian" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://jboss.org/schema/arquillian http://jboss.org/schema/arquillian/arquillian_1_0.xsd"> + + <!-- Uncomment to have test archives exported to the file system for inspection. +This feature can also be controlled using the system property arquillian.deploymentExportPath --> + <!-- +<engine> +<property name="deploymentExportPath">target</property> +</engine> +--> + + <defaultProtocol type="Servlet 3.0"/> + + <group qualifier="clustering-all"> + <container qualifier="node-0" mode="manual" default="true" managed="false"> + <configuration> + <property name="jbossHome">${basedir}/target/jbossas-node0</property> + <property name="javaVmArguments">-Djboss.node.name=node-0</property> + <property name="serverConfig">standalone-example.xml</property> + <property name="allowConnectingToRunningServer">true</property> + <property name="managementAddress">${node0:127.0.0.1}</property> + </configuration> + </container> + <container qualifier="node-1" mode="manual" managed="false"> + <configuration> + <property name="jbossHome">${basedir}/target/jbossas-node1</property> + <property name="javaVmArguments">-Djboss.node.name=node-1 -Djboss.socket.binding.port-offset=100</property> + <property name="serverConfig">standalone-example2.xml</property> + <property name="allowConnectingToRunningServer">true</property> + <property name="managementAddress">${node0:127.0.0.1}</property> + <property name="managementPort">${as.managementPort:10090}</property> + </configuration> + </container> + </group> + + <!-- logThreshold proposed --> + <!-- +<container qualifier="jbossas-managed"> +<configuration> +<property name="logThreshold">ERROR</property> +</configuration> +</container> +--> + +</arquillian> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/examples/javaee/jca-remote/src/test/resources/jboss-deployment-structure.xml ---------------------------------------------------------------------- diff --git a/examples/javaee/jca-remote/src/test/resources/jboss-deployment-structure.xml b/examples/javaee/jca-remote/src/test/resources/jboss-deployment-structure.xml new file mode 100644 index 0000000..5bd26f8 --- /dev/null +++ b/examples/javaee/jca-remote/src/test/resources/jboss-deployment-structure.xml @@ -0,0 +1,7 @@ +<jboss-deployment-structure> + <deployment> + <dependencies> + <module name="org.hornetq"/> + </dependencies> + </deployment> +</jboss-deployment-structure> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/examples/javaee/jms-bridge/pom.xml ---------------------------------------------------------------------- diff --git a/examples/javaee/jms-bridge/pom.xml b/examples/javaee/jms-bridge/pom.xml new file mode 100644 index 0000000..cf319be --- /dev/null +++ b/examples/javaee/jms-bridge/pom.xml @@ -0,0 +1,14 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.hornetq.example.javaee</groupId> + <artifactId>javaee-examples</artifactId> + <version>2.5.0-SNAPSHOT</version> + </parent> + + <artifactId>hornetq-jms-bridge-example</artifactId> + <packaging>jar</packaging> + <name>HornetQ JMS Bridge Example</name> +</project> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/examples/javaee/jms-bridge/readme.html ---------------------------------------------------------------------- diff --git a/examples/javaee/jms-bridge/readme.html b/examples/javaee/jms-bridge/readme.html new file mode 100644 index 0000000..bf64790 --- /dev/null +++ b/examples/javaee/jms-bridge/readme.html @@ -0,0 +1,168 @@ +<html> + <head> + <title>HornetQ JMS Bridge Example</title> + <link rel="stylesheet" type="text/css" href="../../common/common.css" /> + <link rel="stylesheet" type="text/css" href="../../common/prettify.css" /> + <script type="text/javascript" src="../../common/prettify.js"></script> + </head> + <body onload="prettyPrint()"> + <h1>JMS Bridge Example</h1> + + <p>This example shows how to configure and run a JMS Bridge in WildFly.<br /> + A bridge receives messages from a <em>source</em> JMS destination and forwards them to a <em>target</em> destination.</p> + <p>The source and target destinations can be on different servers, even from different JMS providers. For example, you can use this + JMS Bridge to bridge a legacy JMS provider to HornetQ during migration.</p> + + <p>This example will show how to configure and run the simplest bridge:</p> + <ul> + <li>the source and target destinations are hosted by a single WildFly instance</li> + <li>the bridge is run on the same WildFly instance</li> + <li>every time a message is consumed by the bridge from the source, it is forward to the target</li> + <li>The application client will send a message to the source and consume the "same" message from the target to + show that the two destinations were indeed bridged.</li> + </ul> + + <h3>JMS Bridge configuration</h3> + + <p>The JMS Bridge is configured in the "messaging" subsystem.<br /> + <p>The Bridge is deployed in the application server when you simply type <code>./build.sh deploy</code> (or <code>build.bat deploy</code> on windows) (it is copied to <code>${JBOSS_HOME}/server/default-with-hornetq/deploy/</code>).</p> + + <h2>Example step-by-step</h2> + + <p><i>download WildFly 8.0.0.Final from <a href="http://wildfly.org/downloads/">here</a> and install.</i></p> + <p><i>set the JBOSS_HOME property to point to the WildFly install directory</i></p> + <p><i>type <code>mvn verify</code> from the example directory to run</i></p> + + <p>The example is simple: the application will send a message to the <em>source</em> queue and consume the same message + from the <em>target</em> queue.</p> + <p>The bridge is configured in the messaging subsystem:</p> + + <pre class="prettyprint"> + <jms-bridge name="myBridge"> + <source> + <connection-factory name="ConnectionFactory" /> + <destination name="queue/sourceQueue" /> + </source> + <target> + <connection-factory name="ConnectionFactory" /> + <destination name="queue/targetQueue" /> + </target> + <quality-of-service>AT_MOST_ONCE</quality-of-service> + <failure-retry-interval>1000</failure-retry-interval> + <max-retries>7890</max-retries> + <max-batch-size>1</max-batch-size> + <max-batch-time>1000</max-batch-time> + </jms-bridge> + </pre> + + <ol> + <li>First we need to get an initial context so we can look up the JMS resources + </li> + <pre class="prettyprint"> + final Properties env = new Properties(); + + env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory"); + + env.put(Context.PROVIDER_URL, "http-remoting://localhost:8080"); + + initialContext = new InitialContext(env); + </pre> + + <li>We look up the JMS ConnectionFactory</li> + <pre class="prettyprint"> + ConnectionFactory cf = (ConnectionFactory)initialContext.lookup("/jms/RemoteConnectionFactory"); + </pre> + + <p><em>First, we will send a message to the <em>source</em> queue</em>.</p> + + <li>We look up the JMS <em>source</em> queue</li> + <pre class="prettyprint"> + Queue sourceQueue = (Queue)initialContext.lookup("jms/queues/sourceQueue"); + </pre> + + <li>We create a JMS connection, a session and a message producer for the <em>source</em> queue</li> + <pre class="prettyprint"> + sourceConnection = cf.createConnection("guest", "password"); + Session sourceSession = sourceConnection.createSession(false, Session.AUTO_ACKNOWLEDGE); + MessageProducer sourceProducer = sourceSession.createProducer(sourceQueue); + </pre> + + <li>We create and send a message to the <em>source</em> queue. We also display its Message ID.</li> + <pre class="prettyprint"> + TextMessage message = sourceSession.createTextMessage("this is a text message"); + sourceProducer.send(message); + System.out.format("Sent message to %s: %s\n", + ((Queue)message.getJMSDestination()).getQueueName(), + message.getText()); + System.out.format("Message ID : %s\n", message.getJMSMessageID()); + </pre> + + <li>We close the <em>source</em> connection</li> + <pre class="prettyprint"> + sourceConnection.close(); + </pre> + + <p><em>Now that a message has been sent to the <em>source</em> queue, we will consume a message + from the <em>target</em> queue.<br /> + If the bridge runs correctly, it will have consumed the message from the <em>source</em> and + resent it to the <em>target</em> so that we can consume a message from it.</em></p> + + <li>We look up the JMS <em>target</em> queue</li> + <pre class="prettyprint"> + Queue targetQueue = (Queue)initialContext.lookup("jms/queues/targetQueue"); + </pre> + + <li>We create a connection, a session and a message consumer for the <em>target</em> queue</li> + <pre class="prettyprint"> + targetConnection = cf.createConnection(); + Session targetSession = targetConnection.createSession(false, Session.AUTO_ACKNOWLEDGE); + MessageConsumer targetConsumer = targetSession.createConsumer(targetQueue); + </pre> + + <li>We start the JMS connection to receive messages from the <em>target</em></li> + <pre class="prettyprint"> + targetConnection.start(); + </pre> + + <li>We receive a message from the <em>target</em> queue. It has the same content than the message sent to the <em>source</em> queue</li> + <pre class="prettyprint"> + TextMessage messageReceived = (TextMessage)targetConsumer.receive(15000); + System.out.format("\nReceived from %s: %s\n", + ((Queue)messageReceived.getJMSDestination()).getQueueName(), + messageReceived.getText()); + + </pre> + + <li>We now display the received message ID. It is not the same than the ID of the message sent to the <em>source</em> queue. + The message received from the <em>target</em> queue was sent by the bridge, not by the <em>source</em> message producer</li> + <pre class="prettyprint"> + System.out.format("Message ID : %s\n", messageReceived.getJMSMessageID()); + </pre> + + <li>If you need to retrieve the message ID of the message <em>sent to the source</em>, you can use the property <code>HQ_BRIDGE_MSG_ID_LIST</code></li> + <pre class="prettyprint"> + System.out.format("Bridged Message ID : %s\n", messageReceived.getStringProperty("HQ_BRIDGE_MSG_ID_LIST")); + </pre> + + <li>And finally, <b>always</b> remember to close the JMS connections and resources after use, in a <code>finally</code> block. Closing a JMS connection will automatically close all of its sessions, consumers, producer and browser objects</li> + + <pre class="prettyprint"> + finally + { + if (initialContext != null) + { + initialContext.close(); + } + if (sourceConnection != null) + { + sourceConnection.close(); + } + if (targetConnection != null) + { + targetConnection.close(); + } + } + </pre> + </ol> + </body> +</html> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/examples/javaee/jms-bridge/server/standalone/configuration/application-roles.properties ---------------------------------------------------------------------- diff --git a/examples/javaee/jms-bridge/server/standalone/configuration/application-roles.properties b/examples/javaee/jms-bridge/server/standalone/configuration/application-roles.properties new file mode 100644 index 0000000..0ade8fb --- /dev/null +++ b/examples/javaee/jms-bridge/server/standalone/configuration/application-roles.properties @@ -0,0 +1,22 @@ +# +# Properties declaration of users roles for the realm 'ApplicationRealm'. +# +# This includes the following protocols: remote ejb, remote jndi, web, remote jms +# +# Users can be added to this properties file at any time, updates after the server has started +# will be automatically detected. +# +# The format of this file is as follows: - +# username=role1,role2,role3 +# +# A utility script is provided which can be executed from the bin folder to add the users: - +# - Linux +# bin/add-user.sh +# +# - Windows +# bin\add-user.bat +# +# The following illustrates how an admin user could be defined. +# +#admin=PowerUser,BillingAdmin, +guest=guest http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/examples/javaee/jms-bridge/server/standalone/configuration/application-users.properties ---------------------------------------------------------------------- diff --git a/examples/javaee/jms-bridge/server/standalone/configuration/application-users.properties b/examples/javaee/jms-bridge/server/standalone/configuration/application-users.properties new file mode 100644 index 0000000..c52e923 --- /dev/null +++ b/examples/javaee/jms-bridge/server/standalone/configuration/application-users.properties @@ -0,0 +1,24 @@ +# +# Properties declaration of users for the realm 'ApplicationRealm' which is the default realm +# for application services on a new AS 7.1 installation. +# +# This includes the following protocols: remote ejb, remote jndi, web, remote jms +# +# Users can be added to this properties file at any time, updates after the server has started +# will be automatically detected. +# +# The format of this realm is as follows: - +# username=HEX( MD5( username ':' realm ':' password)) +# +# A utility script is provided which can be executed from the bin folder to add the users: - +# - Linux +# bin/add-user.sh +# +# - Windows +# bin\add-user.bat +# +# The following illustrates how an admin user could be defined, this +# is for illustration only and does not correspond to a usable password. +# +#admin=2a0923285184943425d1f53ddd58ec7a +guest=3437456520927d113b17d471d630e0d6 http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/examples/javaee/jms-bridge/server/standalone/configuration/logging.properties ---------------------------------------------------------------------- diff --git a/examples/javaee/jms-bridge/server/standalone/configuration/logging.properties b/examples/javaee/jms-bridge/server/standalone/configuration/logging.properties new file mode 100644 index 0000000..8a011f0 --- /dev/null +++ b/examples/javaee/jms-bridge/server/standalone/configuration/logging.properties @@ -0,0 +1,52 @@ +# +# JBoss, Home of Professional Open Source. +# Copyright 2010, Red Hat, Inc., and individual contributors +# as indicated by the @author tags. See the copyright.txt file in the +# distribution for a full listing of individual contributors. +# +# This is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as +# published by the Free Software Foundation; either version 2.1 of +# the License, or (at your option) any later version. +# +# This software is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this software; if not, write to the Free +# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +# 02110-1301 USA, or see the FSF site: http://www.fsf.org. +# + +# Additional logger names to configure (root logger is always configured) +loggers=org.jboss.as.config + +# Dump system environment at boot by default +logger.org.jboss.as.config.level=DEBUG + +# Root logger level +logger.level=${jboss.boot.server.log.level:INFO} +# Root logger handlers +logger.handlers=FILE,CONSOLE + +# Console handler configuration +handler.CONSOLE=org.jboss.logmanager.handlers.ConsoleHandler +handler.CONSOLE.properties=autoFlush +handler.CONSOLE.level=${jboss.boot.server.log.console.level:INFO} +handler.CONSOLE.autoFlush=true +handler.CONSOLE.formatter=PATTERN + +# File handler configuration +handler.FILE=org.jboss.logmanager.handlers.FileHandler +handler.FILE.level=DEBUG +handler.FILE.properties=autoFlush,fileName +handler.FILE.autoFlush=true +handler.FILE.fileName=${org.jboss.boot.log.file:boot.log} +handler.FILE.formatter=PATTERN + +# Formatter pattern configuration +formatter.PATTERN=org.jboss.logmanager.formatters.PatternFormatter +formatter.PATTERN.properties=pattern +formatter.PATTERN.pattern=%d{HH:mm:ss,SSS} %-5p [%c] %s%E%n http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/examples/javaee/jms-bridge/server/standalone/configuration/mgmt-users.properties ---------------------------------------------------------------------- diff --git a/examples/javaee/jms-bridge/server/standalone/configuration/mgmt-users.properties b/examples/javaee/jms-bridge/server/standalone/configuration/mgmt-users.properties new file mode 100644 index 0000000..349b004 --- /dev/null +++ b/examples/javaee/jms-bridge/server/standalone/configuration/mgmt-users.properties @@ -0,0 +1,24 @@ +# +# Properties declaration of users for the realm 'ManagementRealm' which is the default realm +# for new AS 7.1 installations. Further authentication mechanism can be configured +# as part of the <management /> in standalone.xml. +# +# Users can be added to this properties file at any time, updates after the server has started +# will be automatically detected. +# +# By default the properties realm expects the entries to be in the format: - +# username=HEX( MD5( username ':' realm ':' password)) +# +# A utility script is provided which can be executed from the bin folder to add the users: - +# - Linux +# bin/add-user.sh +# +# - Windows +# bin\add-user.bat + +# The following illustrates how an admin user could be defined, this +# is for illustration only and does not correspond to a usable password. +# +#admin=2a0923285184943425d1f53ddd58ec7a +admin=9d71b431e53d99563aa0dfca628c970b +andy=dfb16391f1be1c454b5bce9822bd9df3