{"id":23318157,"url":"https://github.com/softwareag/j2ee_messaging_apps","last_synced_at":"2025-04-07T04:53:47.815Z","repository":{"id":32769807,"uuid":"122993066","full_name":"SoftwareAG/j2ee_messaging_apps","owner":"SoftwareAG","description":"Modular J2EE messaging applications that rely on common JCA Resource Adapters to interact with Messaging provider such as SoftwareAG Universal Messaging","archived":false,"fork":false,"pushed_at":"2022-01-20T11:05:20.000Z","size":735,"stargazers_count":2,"open_issues_count":3,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-02-13T09:29:44.810Z","etag":null,"topics":["j2ee","java","jca","jms","jms-broker","jms-queue","pubsub","universal-messaging","webmethods"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SoftwareAG.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-02-26T15:57:19.000Z","updated_at":"2022-10-17T08:44:42.000Z","dependencies_parsed_at":"2022-08-07T18:01:27.035Z","dependency_job_id":null,"html_url":"https://github.com/SoftwareAG/j2ee_messaging_apps","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SoftwareAG%2Fj2ee_messaging_apps","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SoftwareAG%2Fj2ee_messaging_apps/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SoftwareAG%2Fj2ee_messaging_apps/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SoftwareAG%2Fj2ee_messaging_apps/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SoftwareAG","download_url":"https://codeload.github.com/SoftwareAG/j2ee_messaging_apps/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247595370,"owners_count":20963943,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["j2ee","java","jca","jms","jms-broker","jms-queue","pubsub","universal-messaging","webmethods"],"created_at":"2024-12-20T17:15:43.029Z","updated_at":"2025-04-07T04:53:47.781Z","avatar_url":"https://github.com/SoftwareAG.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"j2ee_messaging_apps: JMS Messaging Apps using common Java EE patterns and Resource Adapter JCA patterns\n=========================================================================================================\n\nAuthor: Fabien Sanglier [github profile](https://github.com/lanimall)\n\nProject Source: \u003chttps://github.com/lanimall/j2ee_messaging_apps\u003e\n\nWhat is it?\n--------------------------------------------\nModular J2EE messaging applications that rely on common JCA Resource Adapters to interact with Messaging provider such as SoftwareAG Universal Messaging.\nUsing these applications, it's easy to create different message pub/sub designs by \"plugging\" multiple apps together via EJB lookups.\n\nThese J2EE apps are compliant with EJB specs and JCA specs, and have been succesfully tested on both JBOSS EAP 6.x and IBM Websphere 8.x platforms,\ninteracting with the the [Software AG Universal Messaging Server](http://www2.softwareag.com/it/products/terracotta/universal_messaging.aspx) via its JCA-compliant Resource Adapter.\n\n**For any issue**: \nPlease create a ticket on github and the developper will make every attempts to address it as soon as possible.\nOr even better: feel free to fork, fix it and submit a PR.\n\nLicensing - Apache-2.0\n--------------------------------------------\n\nThis project is Licensed under the Apache License, Version 2.0 (the \"License\");\nYou may not use this project except in compliance with the License.\nYou may obtain a copy of the License at\n\n[http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\nCode Content\n--------------------------------------------\n\n* SimpleJmsSend\n  * Sends JMS messages to UM queues/topics via JCA proxies (JCA Admin objects and Conection Factories) using the Resource Adapter:\n    * \"Send And Forget\"\n    * \"Send And Wait For Reply\"\n  * Exposes web front end to drive load\n  * Implements remote interface to plug this into other app via EJB Remoting\n* SimpleJmsConsume\n  * Consumes JMS messages from queues/topics using the Resource Adapter,\n  * Ability to perform some mock processing (eg. sleep time, mock exceptions at intervals, etc...),\n  * Ability to call remote EJBs that implement the MessageInterop interface (eg. the ones in the SimpleJmsSend application) in order to chain message comsumption with extra message sending,\n  * Ability to reply if the \"replyTo\" field is specified in the message (or if a default \"replyTo\" is set)\n* SimpleSoapJmsClient\n  * JAX-WS client that works with the SimpleSoapJmsServer to communicate with the SOAP Endpoint\n  * Implements both SOAP-over-HTTP and SOAP-over-JMS mechanisms to test and compare\n  * Exposes web front end to drive load\n  * Implements remote interface to plug this into other app via EJB Remoting\n* SimpleSoapJmsServer\n  * Creates a simple SOAP endpoint (JAX-WS) for OneWay and TwoWay SOAP requests\n  * Ability to use either HTTP or JMS to communicate with SOAP to this endpoint\n* libs\n  * Shared library that contains global code and especially the custom-built JMSHelper that encapsulate simple JMS contructs\n  * A simple counter (accessible via servlet) is also made available on every apps to track various metrics (message sent, message consumed, processing success, processing errors, etc...)\n  \n\nPre-requisites for building the apps\n--------------------------------------------\n\n* [Apache Ant](https://ant.apache.org/)\n* [Java](http://openjdk.java.net)\n* [Apache Maven](http://apache.spinellicreations.com/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.zip)\n\nIn order to build, the maven home path must be provided in either:\n* An environment property \"MAVEN_HOME\" or \"M2_HOME\", OR\n* Specified in the \"maven.home\" property in the [build.properties](./build.properties) file\n\nResource Adapter Guides\n--------------------------------------------\n\nDetail guides to setup Software AG Universal Messaging Resource Adapter on both JBOSS EAP 6 and IBM Websphere 8.x are availble at:\n\n* [Integration and Configuration of SoftwareAG’s Universal Messaging with JBOSS EAP 6.1](http://techcommunity.softwareag.com/web/guest/pwiki/-/wiki/Main/Integration+and+Configuration+of+SoftwareAG’s+Universal+Messaging+with+JBOSS+EAP+6.1)\n* [Integration and configuration of sofwareag’s universal messaging with ibm websphere application server](http://techcommunity.softwareag.com/web/guest/pwiki/-/wiki/Main/integration+and+configuration+of+sofwareag’s+universal+messaging+with+ibm+websphere+application+server)\n\nQuick Start Guide with Different Samples\n--------------------------------------------\n\nAll samples below require a JCA Resource Adapter installed on the Application Server. \nPlease refer to the section \"Resource Adapter Guides\" for detailed guides.\n\n*NOTE1*: All the samples to be deployed on JBOSS rely on the following server resources:\n1. UM Resource Adapter deployed with name \"umra.rar\" (this name is explicitely used in the jboss config to map the MDBs to the right resource adapter)\n2. A resource bean pool should be created with name \"umra-strict-max-pool\" (this name is explicitely used in the jboss config to make the MDBs used this pool)\n\nIf you wanted to change these names, simply update the [SimpleJmsConsume/build.default.properties](./SimpleJmsConsume/build.default.properties) file.\n* Consumer.jboss.resource-adapter-name=umra.rar\n* Consumer.jboss.bean-instance-pool=\n\n*NOTE2*: For each profile, you have several build flag available for customization:\n\n1. Build for JBOSS or Websphere (to apply the right EJB lookup properties)\n\nDefined by build variable \"j2ee-jms-examples.deployment_target\" with following possible values\n```\n-Dj2ee-jms-examples.deployment_target={jboss|websphere}\n```\nDefault if not specified: jboss\n\n2. Set logging level for the built application\n\nDefined by build variable \"j2ee-jms-examples.logging.level\" with following possible values:\n```\nj2ee-jms-examples.logging.level={info|debug|trace|warn|error}\n```\nDefault if not specified: info\n\n### Sample Profile 1a: Simple JMS \"Send and Forget\" + Consume\n\n#### Description\n\nThis sample sends JMS messages to a queue, and consume from that same queue (2 apps will be built and deployed)\nThe apps come with pre-configured resource names that must be created on the application server(s). \n\n#### Building the apps\n\nJboss:\n```\n   ant -Dj2ee-jms-examples.deployment_target=jboss -Dj2ee-jms-examples.deployment_profilename=profile1a assemble\n```\n\nWebsphere:\n```\n   ant -Dj2ee-jms-examples.deployment_target=websphere -Dj2ee-jms-examples.deployment_profilename=profile1a assemble\n```\n\n2 applications should be created:\n* dist/SimpleJmsSend.ear\n* dist/SimpleJmsConsume.ear\n\n#### Configuration pre-requisites before deploying the apps on the Application Server\n\nThe applications requires some JCA Resource Adapter resources that must be created on the application server.\nWhile all the resource names can be easily modified, the current apps require the following resources to be created as-is.\nFailure to create a resource or missing a resource attrribute will result in the apps not starting due to errors. \n\n##### Objects to be created on the Messaging provider\n\n* Queues:\n  * JMSSamples/SimpleQueue\n* Connection Factories:\n  * SimpleJmsSendConnectionFactory\n  * SimpleJmsConsumerConnectionFactory\n\n##### RA Objects to be created on the Application servers\n\n* Resource Adapter\n  * Managed Connection Factory:\n    * SimpleJmsSendConnectionFactory (name=\"SimpleJmsSendConnectionFactory\", jndi-name=\"java:/jms/SimpleJmsSendConnectionFactory\", class-name=\"com.sun.genericra.outbound.ManagedJMSConnectionFactory\")\n      * Properties:\n        * Key=ConnectionFactoryJndiName // Value=SimpleJmsSendConnectionFactory\n  * Managed Admin Object:\n    * SimpleJmsSendDestination (name=\"SimpleJmsSendDestination\", jndi-name=\"java:/jms/SimpleJmsSendDestination\", class-name=\"com.sun.genericra.outbound.QueueProxy\")\n      * Properties:\n        * Key=DestinationJndiName // Value=JMSSamples/SimpleQueue\n  * Managed Activation Specification (not available in Jboss -- see note below)\n    * SimpleJmsConsumer (name=\"SimpleJmsConsumer\", jndi-name=\"java:/jms/SimpleJmsConsumer\", class-name=\"com.sun.genericra.inbound.ActivationSpec\")\n      * Properties:\n        * Key=connectionFactoryJndiName // Value=SimpleJmsConsumerConnectionFactory\n        * Key=destinationJndiName // Value=JMSSamples/SimpleQueue\n\n**NOTE**: Not all application servers provide abstraction for activation specs. Please refer to your application server documentation.\nFor example, Websphere provides such abstraction in the Admin Console.\nWhereas for Jboss, the activation specs are directly provided by the application in the jboss descriptor (jboss-ejb3.xml),\nand I abstracted these settings in the application build.properties for easy modification.\n\nThe application supports and will work with both mechanisms.\n\n#### Deploy the apps and run\n\nDeploy the EARs using the standard mechanism for the application server of choice.\nThe deployment can use all the defaults...and should not require any configuration set at runtimte.\n\nTo send messages, simply call the following url:\n* http://APP_SERVER_HOST:PORT/SimpleJmsSend/JmsSendAndForget\n\nTo access the various implemented counters that track the sends and consumes, here is the URL:\n* http://APP_SERVER_HOST:PORT/SimpleJmsSend/messagecounters\n* http://APP_SERVER_HOST:PORT/SimpleJmsConsume/messagecounters\n\n**NOTE**: In the event that the application does not start, it's very likely that \nsomething was not setup right with the application server configuration related to the resource adapter configurations \n(eg. a managed connection factory or managed admin object not present or configured right etc...)\nIn most case, reviewing the application server logs is a good start to see what may have gone wrong.\n\n### Sample Profile 2a: Simple JMS \"Send with Reply\" + consume the reply (either synchronously or asynchronously)\n\n#### Description\n\nThis sample demonstrates a \"request / reply\" use case with JMS messaging constructs \n(which is a common data exchange pattern that adds various benefits like data delivery reliability, failure recovery, built-in load balancing, etc...)\n\n3 applications are created in this use case:\n* SimpleJmsSendWithReply.ear:\n  * Sends JMS messages to a queue with a ReplyTo header.\n  * 2 options for sends: \n    * \"Send and Forget\" (Asynchronous send and reply - Reply consumed by another app)\n    * \"Send and Wait\" for reply (Synchronous send and wait - reply consumed in the same waiting thread)\n* SimpleJmsConsumeAndReply.ear:\n  * receives the message, processes it and reply to the appropriate destination based on the ReplyTo header embedded in the received message.\n* SimpleJmsConsumeTheReply.ear\n  * consumes the Asynchronous reply message sent by the \"Send and Forget\" option\n\n#### Building the apps\n\nJboss:\n```\n   ant -Dj2ee-jms-examples.deployment_target=jboss -Dj2ee-jms-examples.deployment_profilename=profile2a assemble\n```\n\nWebsphere:\n```\n   ant -Dj2ee-jms-examples.deployment_target=websphere -Dj2ee-jms-examples.deployment_profilename=profile2a assemble\n```\n\n3 applications should be created:\n* dist/SimpleJmsSendWithReply.ear\n* dist/SimpleJmsConsumeAndReply.ear\n* dist/SimpleJmsConsumeTheReply.ear\n\n#### Configuration pre-requisites before deploying the apps on the Application Server\n\nThe built applications require some JCA Resource Adapter resources that must be created on the application server.\nWhile all the resource names can be easily modified, the current apps require the following resources to be created as-is.\nFailure to create a resource or missing a resource attrribute will result in the apps not starting due to errors.\n\n##### Objects to be created on the Messaging provider\n\n* Queues:\n  * JMSSamples/RequestQueue\n  * JMSSamples/ReplyQueueSync\n  * JMSSamples/ReplyQueueAsync\n* Connection Factories:\n  * SimpleJmsSendWithReplyConnectionFactory\n  * SimpleJmsConsumerConnectionFactory\n\n##### RA Objects to be created on the Application servers\n\n* Resource Adapter\n  * Managed Connection Factory:\n    * SimpleJmsSendWithReplyConnectionFactory (name=\"SimpleJmsSendWithReplyConnectionFactory\", jndi-name=\"java:/jms/SimpleJmsSendWithReplyConnectionFactory\", class-name=\"com.sun.genericra.outbound.ManagedJMSConnectionFactory\")\n      * Properties:\n        * Key=ConnectionFactoryJndiName // Value=SimpleJmsSendWithReplyConnectionFactory\n        * Key=useProxyMessages // Value=true\n  * Managed Admin Object:\n    * SimpleJmsSendWithReplyDestination (name=\"SimpleJmsSendWithReplyDestination\", jndi-name=\"java:/jms/SimpleJmsSendWithReplyDestination\", class-name=\"com.sun.genericra.outbound.QueueProxy\")\n      * Properties:\n        * Key=DestinationJndiName // Value=JMSSamples/RequestQueue\n    * SimpleJmsAsyncReplyDestination (name=\"SimpleJmsAsyncReplyDestination\", jndi-name=\"java:/jms/SimpleJmsAsyncReplyDestination\", class-name=\"com.sun.genericra.outbound.QueueProxy\")\n      * Properties:\n        * Key=DestinationJndiName // Value=JMSSamples/ReplyQueueAsync\n    * SimpleJmsSyncReplyDestination (name=\"SimpleJmsSyncReplyDestination\", jndi-name=\"java:/jms/SimpleJmsSyncReplyDestination\", class-name=\"com.sun.genericra.outbound.QueueProxy\")\n      * Properties:\n        * Key=DestinationJndiName // Value=JMSSamples/ReplyQueueSync\n  * Managed Activation Specification:\n    * SimpleJmsConsumeRequest (name=\"SimpleJmsConsumeRequest\", jndi-name=\"java:/jms/SimpleJmsConsumeRequest\", class-name=\"com.sun.genericra.inbound.ActivationSpec\")\n      * connectionFactoryJndiName=SimpleJmsConsumerConnectionFactory\n      * destinationJndiName=JMSSamples/RequestQueue\n    * SimpleJmsConsumeAsyncReply (name=\"SimpleJmsConsumeAsyncReply\", jndi-name=\"java:/jms/SimpleJmsConsumeAsyncReply\", class-name=\"com.sun.genericra.inbound.ActivationSpec\")\n      * connectionFactoryJndiName=SimpleJmsConsumerConnectionFactory\n      * destinationJndiName=JMSSamples/ReplyQueueAsync\n \n**NOTE**: Not all application servers provide abstraction for activation specs. Please refer to your application server documentation.\nFor example, Websphere provides such abstraction in the Admin Console.\nWhereas for Jboss, the activation specs are directly provided by the application in the jboss descriptor (jboss-ejb3.xml),\nand I abstracted these settings in the application build.properties for easy modification.\n\nThe application supports and will work with both mechanisms.\n\n#### Deploy the apps and run\n\nDeploy the EARs using the standard mechanism for the application server of choice.\nThe deployment can use all the defaults...and should not require any configuration set at runtimte.\n\nTo send messages (using either \"Send And Forget\" or \"Send and Wait\"), simply call the following url:\n* http://APP_SERVER_HOST:PORT/SimpleJmsSendWithReply/JmsSendAndForget\n* http://APP_SERVER_HOST:PORT/SimpleJmsSendWithReply/JmsSendAndWait\n\nTo access the various implemented counters that track the sends and consumes, here is the URL:\n* http://APP_SERVER_HOST:PORT/SimpleJmsSendWithReply/messagecounters\n* http://APP_SERVER_HOST:PORT/SimpleJmsConsumeAndReply/messagecounters\n* http://APP_SERVER_HOST:PORT/SimpleJmsConsumeTheReply/messagecounters\n\n\n### Sample Profile 1b: JMS \"Send to a Driver queue\" which drives profile 1a (\"Send And Forget\" operations)\n\n#### Description\n\nThis sample sends JMS messages to a \"driver\" queue\nThen, a consumer app consumes the driver queue messages, and calls the \"Send And Forget\" EJB from the \"SimpleJmsSendWithReply.ear\" app of Profile 1a.\nFinally, as in profile 1a, a 3rd app consumes the message.\n\n**NOTE**: In order to better customize what you send on that driver queue, you could use any JMS-capable program (eg. jmeter)\nto send the desired JMS message with the right payload and headers to that driver queue (instead of the sample \"SimpleJmsSendAndForgetToDriver.ear\" app)\nThat way, the right message profile can flow through the various apps (as opposed to built-in sample messages)\n\n#### Building the apps\n\nJboss:\n```\n   ant -Dj2ee-jms-examples.deployment_target=jboss -Dj2ee-jms-examples.deployment_profilename=profile1b assemble\n```\n\nWebsphere:\n```\n   ant -Dj2ee-jms-examples.deployment_target=websphere -Dj2ee-jms-examples.deployment_profilename=profile1b assemble\n```\n\n4 applications should be created:\n* dist/SimpleJmsSendAndForgetToDriver.ear\n* dist/SimpleJmsConsumeDriverAndForwardToSendNoReply.ear\n* dist/SimpleJmsSend.ear\n* dist/SimpleJmsConsume.ear\n\n#### Configuration pre-requisites before deploying the apps on the Application Server\n\nThe application built in the previous stage requires some JCA Resource Adapter resources to be created on the application server.\nWhile all the resource names can be easily modified, for the purpose of this quick start, the default apps require the following resources:\n\n##### Objects to be created on the Messaging provider\n\nSame as profile1a + the following extra resources:\n\n* Queues:\n  * JMSSamples/DriverQueue\n\n##### RA Objects to be created on the Application servers\n\nSame as profile1a + the following extra resources:\n\n* Managed Admin Object:\n  * SimpleJmsSendDriverDestination\n    * DestinationJndiName=JMSSamples/DriverQueue\n\n* Managed Activation Specification:\n  * SimpleJmsConsumerDriverQueue\n    * connectionFactoryJndiName=SimpleJmsConsumerConnectionFactory\n    * destinationJndiName=JMSSamples/DriverQueue\n\n#### Deploy the app and run\n\nDeploy the EARs using the standard mechanism for the application server of choice.\nThe deployment can use all the defaults...and should not require any configuration set at runtimte.\n\nTo send messages (using either \"Send And Forget\" or \"Send and Wait\"), simply call the following url:\n* http://APP_SERVER_HOST:PORT/SimpleJmsSendAndForgetToDriver/JmsSendAndForget\n\nTo access the various implemented counters that track the sends and consumes, here are the URLs:\n* http://APP_SERVER_HOST:PORT/SimpleJmsSendAndForgetToDriver/messagecounters\n* http://APP_SERVER_HOST:PORT/SimpleJmsConsume_DriverAndSend/messagecounters\n* http://APP_SERVER_HOST:PORT/SimpleJmsSend/messagecounters\n* http://APP_SERVER_HOST:PORT/SimpleJmsConsume/messagecounters\n\n\n### Sample Profile 2b: JMS \"Send to a Driver queue\" which drives profile 2a with Asynchronous Reply (\"Send And Forget\" with reply operations)\n\n#### Description\n\nThis sample sends JMS messages to a \"driver\" queue \nThen, a consumer app consumes the driver queue messages, and calls the \"Send And Forget\" EJB from the \"SimpleJmsSendWithReply.ear\" app of Profile 2a.\nThen, as in profile 2a, a consume app receives the message, processes it and reply to the appropriate destination basded on the ReplyTo header embedded in the message.\nFinally, a 3rd app consumes the Asynchronous reply message (used only by the \"Asynchronous send and reply\" case)\n\n**NOTE**: In order to better customize better what you send on that driver queue, you could use any JMS-capable program (eg. jmeter)\nto send the desired JMS message with the right payload and headers to that driver queue (instead of the sample \"SimpleJmsSendAndForgetToDriver.ear\" app)\nThat way, the right message profile can flow through the various apps (as opposed to built-in sample messages)\n\n#### Build the apps\n\nJboss:\n```\n   ant -Dj2ee-jms-examples.deployment_target=jboss -Dj2ee-jms-examples.deployment_profilename=profile2b assemble\n```\n\nWebsphere:\n```\n   ant -Dj2ee-jms-examples.deployment_target=websphere -Dj2ee-jms-examples.deployment_profilename=profile2b assemble\n```\n\n5 applications should be created:\n* dist/SimpleJmsSendDriver.ear\n* dist/SimpleJmsConsumeDriverAndForwardToSendWithReplyAsync.ear\n* dist/SimpleJmsSendWithReply.ear\n* dist/SimpleJmsConsumeAndReply.ear\n* dist/SimpleJmsConsumeTheReply.ear\n\n#### Configuration pre-requisites before deploying the apps on the Application Server\n\nThe application built in the previous stage requires some JCA Resource Adapter resources to be created on the application server.\nWhile all the resource names can be easily modified, for the purpose of this quick start, the default apps require the following resources:\n\n##### Objects to be created on the Messaging provider\n\n* Queues:\n  * JMSSamples/DriverQueue\n  * JMSSamples/RequestQueue\n  * JMSSamples/ReplyQueueAsync\n* Connection Factories:\n  * SimpleJmsSendConnectionFactory\n  * SimpleJmsConsumerConnectionFactory\n\n##### RA Objects to be created on the Application servers\n\n* Managed Connection Factory:\n  * SimpleJmsSendConnectionFactory\n    * ConnectionFactoryJndiName=SimpleJmsSendConnectionFactory\n* Managed Admin Object:\n  * SimpleJmsSendDriverDestination\n    * DestinationJndiName=JMSSamples/DriverQueue\n  * SimpleJmsSendWithReplyDestination\n    * DestinationJndiName=JMSSamples/RequestQueue\n  * SimpleJmsSendReplyToDestination\n    * DestinationJndiName=JMSSamples/ReplyQueueAsync\n\n* Managed Activation Specification:\n  * SimpleJmsConsumerDriverQueue\n    * connectionFactoryJndiName=SimpleJmsConsumerConnectionFactory\n    * destinationJndiName=JMSSamples/DriverQueue\n  * SimpleJmsConsumeRequest\n    * connectionFactoryJndiName=SimpleJmsConsumerConnectionFactory\n    * destinationJndiName=JMSSamples/RequestQueue\n  * SimpleJmsConsumeAsyncReply\n    * connectionFactoryJndiName=SimpleJmsConsumerConnectionFactory\n    * destinationJndiName=JMSSamples/ReplyQueueAsync\n\n**NOTE**: Not all application servers provide abstraction for activation specs. Please refer to your application server documentation.\nFor example, Websphere provides such abstraction, whereas for Jboss, the activation specs are directly provided in the MDB descriptor (eg. jboss-ejb3.xml)\nThe applications support and will work with both mechanisms.\n\n#### Deploy the app and run\n\nDeploy the EARs using the standard mechanism for the application server of choice.\nThe deployment can use all the defaults...and should not require any configuration set at runtimte.\n\nTo send messages to the driver queue, simply call the following url:\n* http://APP_SERVER_HOST:PORT/SimpleJmsSendAndForgetToDriver/JmsSendAndForget\n\nOR use any JMS-capable program (eg. jmeter) to directly send the desired JMS message with the right payload and headers to that driver queue.\n   \nTo access the various implemented counters that track the sends and consumes, here is the URL:\n* http://APP_SERVER_HOST:PORT/SimpleJmsSendAndForgetToDriver/messagecounters\n* http://APP_SERVER_HOST:PORT/SimpleJmsConsumeAndForwardToEJB/messagecounters\n* http://APP_SERVER_HOST:PORT/SimpleJmsSendWithReply/messagecounters\n* http://APP_SERVER_HOST:PORT/SimpleJmsConsumeAndReply/messagecounters\n* http://APP_SERVER_HOST:PORT/SimpleJmsConsumeTheReply/messagecounters\n\n\n### Sample Profile 2c: JMS \"Send to a Driver queue\" which drives profile 2a with Synchronous Reply (\"Send And Wait\" for reply operations)\n\n#### Description\n\nSame as profile 2b, but in this case, the consumer app which consumes the driver queue messages will calls\nthe \"Send And Wait\" EJB from the \"SimpleJmsSendWithReply.ear\" app.\n\n#### Build\n\nJboss:\n```\n   ant -Dj2ee-jms-examples.deployment_target=jboss -Dj2ee-jms-examples.deployment_profilename=profile2c assemble\n```\n\nWebsphere:\n```\n   ant -Dj2ee-jms-examples.deployment_target=websphere -Dj2ee-jms-examples.deployment_profilename=profile2c assemble\n```\n\n5 applications should be created:\n* dist/SimpleJmsSendDriver.ear\n* dist/SimpleJmsConsumeDriverAndForwardToSendWithReplySync.ear\n* dist/SimpleJmsSendWithReply.ear\n* dist/SimpleJmsConsumeAndReply.ear\n* dist/SimpleJmsConsumeTheReply.ear\n\n#### Configuration Pre-requisites before deploying the apps on the Application Server\n\nThe application built in the previous stage requires some JCA Resource Adapter resources to be created on the application server.\nWhile all the resource names can be easily modified, for the purpose of this quick start, the default apps require the following resources:\n\n##### Objects to be created on the Messaging provider\n\n* Queues:\n  * JMSSamples/DriverQueue\n  * JMSSamples/RequestQueue\n  * JMSSamples/ReplyQueueSync\n\n* Connection Factories:\n  * SimpleJmsSendConnectionFactory\n  * SimpleJmsConsumerConnectionFactory\n\n##### RA Objects to be created on the Application servers\n\n* Managed Connection Factory:\n  * SimpleJmsSendConnectionFactory\n    * ConnectionFactoryJndiName=SimpleJmsSendConnectionFactory\n\n* Managed Admin Object:\n  * SimpleJmsSendDriverDestination\n    * DestinationJndiName=JMSSamples/DriverQueue\n  * SimpleJmsSendWithReplyDestination\n    * DestinationJndiName=JMSSamples/RequestQueue\n  * SimpleJmsSendReplyToDestination\n     * DestinationJndiName=JMSSamples/ReplyQueueSync\n\n* Managed Activation Specification:\n  * SimpleJmsConsumerDriverQueue\n    * connectionFactoryJndiName=SimpleJmsConsumerConnectionFactory\n    * destinationJndiName=JMSSamples/DriverQueue\n  * SimpleJmsConsumeRequest\n    * connectionFactoryJndiName=SimpleJmsConsumerConnectionFactory\n    * destinationJndiName=JMSSamples/RequestQueue\n  * SimpleJmsConsumeAsyncReply\n    * connectionFactoryJndiName=SimpleJmsConsumerConnectionFactory\n    * destinationJndiName=JMSSamples/ReplyQueueAsync\n\n**NOTE**: Not all application servers provide abstraction for activation specs. Please refer to your application server documentation.\nFor example, Websphere provides such abstraction, whereas for Jboss, the activation specs are directly provided in the MDB descriptor (eg. jboss-ejb3.xml)\nThe applications support and will work with both mechanisms.\n\n#### Deploy the app and run\n\nDeploy the EARs using the standard mechanism for the application server of choice.\nThe deployment can use all the defaults...and should not require any configuration set at runtimte.\n\nTo send messages to the driver queue, simply call the following url:\n* http://APP_SERVER_HOST:PORT/SimpleJmsSendAndForgetToDriver/JmsSendAndForget\n\nOR use any JMS-capable program (eg. jmeter) to directly send the desired JMS message with the right payload and headers to that driver queue.\n\nTo access the various implemented counters that track the sends and consumes, here is the URL:\n* http://APP_SERVER_HOST:PORT/SimpleJmsSendAndForgetToDriver/messagecounters\n* http://APP_SERVER_HOST:PORT/SimpleJmsConsumeAndForwardToEJB/messagecounters\n* http://APP_SERVER_HOST:PORT/SimpleJmsSendWithReply/messagecounters\n* http://APP_SERVER_HOST:PORT/SimpleJmsConsumeAndReply/messagecounters\n* http://APP_SERVER_HOST:PORT/SimpleJmsConsumeTheReply/messagecounters\n\n\n\n\n### Sample Profile 4: SOAP-over-JMS\n\nInstructions TBD...\n______________________\nFor more information you can Ask a Question in the [TECHcommunity Forums](https://tech.forums.softwareag.com/tags/c/forum/1/universal-messaging).\n\nYou can find additional information in the [Software AG TECHcommunity](https://tech.forums.softwareag.com/tag/universal-messaging).\n______________________\nThese tools are provided as-is and without warranty or support. They do not constitute part of the Software AG product suite. Users are free to use, fork and modify them, subject to the license agreement. While Software AG welcomes contributions, we cannot guarantee to include every contribution in the master project.\n______________________\nContact us at [TECHcommunity](mailto:technologycommunity@softwareag.com?subject=Github/SoftwareAG) if you have any questions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoftwareag%2Fj2ee_messaging_apps","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsoftwareag%2Fj2ee_messaging_apps","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoftwareag%2Fj2ee_messaging_apps/lists"}