| type=page | |
| status=published | |
| title=Developing Connectors | |
| next=lifecycle-listeners.html | |
| prev=java-clients.html | |
| ~~~~~~ | |
| = Developing Connectors | |
| [[GSDVG00013]][[bealk]] | |
| [[developing-connectors]] | |
| == 11 Developing Connectors | |
| This chapter describes {productName} support for the Jakarta EE | |
| Connector Architecture, also known as | |
| http://jcp.org/en/jsr/detail?id=322[JSR 322] | |
| (`http://jcp.org/en/jsr/detail?id=322`). | |
| The Jakarta EE Connector Architecture provides a Java solution to the | |
| problem of connectivity between multiple application servers and | |
| existing enterprise information systems (EISs). By using the Jakarta EE | |
| Connector architecture, EIS vendors no longer need to customize their | |
| product for each application server. Application server vendors who | |
| conform to the Jakarta EE Connector architecture do not need to write | |
| custom code to add connectivity to a new EIS. | |
| This chapter uses the terms connector and resource adapter | |
| interchangeably. Both terms refer to a resource adapter module that is | |
| developed in conformance with the Jakarta EE Connector Architecture | |
| Specification. | |
| [NOTE] | |
| ==== | |
| If you installed the Web Profile, connector modules that use only | |
| outbound communication features and work-management that does not | |
| involve inbound communication features are supported. Other connector | |
| features are supported only in the full {productName}. | |
| ==== | |
| For more information about connectors, see | |
| https://eclipse-ee4j.github.io/jakartaee-tutorial/#resource-adapters-and-contracts[ | |
| Resource Adapters and Contracts] in The Jakarta EE Tutorial. | |
| For information about deploying a connector to the {productName}, see | |
| the link:application-deployment-guide.html#GSDPG[ | |
| {productName} Application Deployment Guide]. | |
| The following topics are addressed here: | |
| * link:#beall[Connector Support in the {productName}] | |
| * link:#bealr[Advanced Connector Configuration Options] | |
| * link:#bealz[Inbound Communication Support] | |
| * link:#gizdm[Outbound Communication Support] | |
| * link:#beama[Configuring a Message Driven Bean to Use a Resource Adapter] | |
| [[beall]][[GSDVG00162]][[connector-support-in-the-glassfish-server]] | |
| === Connector Support in the {productName} | |
| The {productName} supports the development and deployment of resource | |
| adapters that are compatible with the Connector 1.6 specification (and, | |
| for backward compatibility, the Connector 1.0 and 1.5 specifications). | |
| The Connector 1.0 specification defines the outbound connectivity system | |
| contracts between the resource adapter and the {productName}. The | |
| Connector 1.5 specification introduces major additions in defining | |
| system level contracts between the {productName} and the resource | |
| adapter with respect to inbound connectivity, life cycle management, and | |
| thread management. The Connector 1.6 specification introduces further | |
| additions in defining system level contracts between the {productName} and the resource adapter with respect to the following: | |
| * Generic work context contract — A generic contract that enables a | |
| resource adapter to control the execution context of a `Work` instance | |
| that it has submitted to the {productName} for execution. The | |
| `Generic` work contract provides the mechanism for a resource adapter to | |
| augment the runtime context of a `Work` instance with additional | |
| contextual information flown-in from the EIS. This contract enables a | |
| resource adapter to control, in a more flexible manner, the contexts in | |
| which the `Work` instances submitted by it are executed by the | |
| application server's `WorkManager`. | |
| * Security work context — A standard contract that enables a resource | |
| adapter to establish security information while submitting a `Work` | |
| instance for execution to a `WorkManager` and while delivering | |
| messages-to-message endpoints residing in the {productName}. This | |
| contract provides a mechanism to support the execution of a `Work` | |
| instance in the context of an established identity. It also supports the | |
| propagation of user information or Principal information from an EIS to | |
| a `MessageEndpoint` during message inflow. | |
| * Transaction context — The transaction context contract between the | |
| resource adapter and the application server leverages the Generic Work | |
| Context mechanism by describing a standard `WorkContext`, the | |
| `TransactionContext`. It represents the standard interface a resource | |
| adapter can use to propagate transaction context information from the | |
| EIS to the application server. | |
| [[bealm]][[GSDVG00474]][[connector-architecture-for-jms-and-jdbc]] | |
| ==== Connector Architecture for JMS and JDBC | |
| In the Administration Console, connector, JMS, and JDBC resources are | |
| handled differently, but they use the same underlying Connector | |
| architecture. In the {productName}, all communication to an EIS, | |
| whether to a message provider or an RDBMS, happens through the Connector | |
| architecture. To provide JMS infrastructure to clients, the {productName} uses the Open Message Queue software. To provide JDBC | |
| infrastructure to clients, the {productName} uses its own JDBC system | |
| resource adapters. The {productName} automatically makes these system | |
| resource adapters available to any client that requires them. | |
| For more information about JMS in the {productName}, see | |
| link:jms.html#beaob[Using the Java Message Service]. For more information | |
| about JDBC in the {productName}, see link:jdbc.html#beamj[Using the | |
| JDBC API for Database Access]. | |
| [[bealn]][[GSDVG00475]][[connector-configuration]] | |
| ==== Connector Configuration | |
| The {productName} does not need to use `sun-ra.xml`, which previous | |
| {productName} versions used, to store server-specific deployment | |
| information inside a Resource Adapter Archive (RAR) file. (However, the | |
| `sun-ra.xml` file is still supported for backward compatibility.) | |
| Instead, the information is stored in the server configuration. As a | |
| result, you can create multiple connector connection pools for a | |
| connection definition in a functional resource adapter instance, and you | |
| can create multiple user-accessible connector resources (that is, | |
| registering a resource with a JNDI name) for a connector connection | |
| pool. In addition, dynamic changes can be made to connector connection | |
| pools and the connector resource properties without restarting the | |
| {productName}. | |
| [[bealr]][[GSDVG00163]][[advanced-connector-configuration-options]] | |
| === Advanced Connector Configuration Options | |
| The following topics are addressed here: | |
| * link:#beals[Thread Associations] | |
| * link:#bealt[Security Maps] | |
| * link:#giqgt[Work Security Maps] | |
| * link:#bealu[Overriding Configuration Properties] | |
| * link:#bealv[Testing a Connector Connection Pool] | |
| * link:#gizcv[Flushing a Connector Connection Pool] | |
| * link:#bealw[Handling Invalid Connections] | |
| * link:#bealx[Setting the Shutdown Timeout] | |
| * link:#gjjyy[Specifying the Class Loading Policy] | |
| * link:#bealy[Using Last Agent Optimization of Transactions] | |
| * link:#gizba[Disabling Pooling for a Connection] | |
| * link:#gizcs[Using Application-Scoped Connectors] | |
| [[beals]][[GSDVG00476]][[thread-associations]] | |
| ==== Thread Associations | |
| Connectors can submit work instances to the {productName} for | |
| execution. By default, the {productName} services work requests for | |
| all connectors from its default thread pool. However, you can associate | |
| a specific user-created thread pool to service work requests from a | |
| connector. A thread pool can service work requests from multiple | |
| resource adapters. To create a thread pool: | |
| * In the Administration Console, select Thread Pools under the relevant | |
| configuration. For details, click the Help button in the Administration | |
| Console. | |
| * Use the `asadmin create-threadpool` command. For details, see the | |
| link:reference-manual.html#GSRFM[{productName} Reference Manual]. | |
| To associate a connector with a thread pool: | |
| * In the Administration Console, open the Applications component and | |
| select Resource Adapter Configs. Specify the name of the thread pool in | |
| the Thread Pool ID field. For details, click the Help button in the | |
| Administration Console. | |
| * Use the `--threadpoolid` option of the | |
| `asadmin create-resource-adapter-config` command. For details, see the | |
| link:reference-manual.html#GSRFM[{productName} Reference Manual]. | |
| If you create a resource adapter configuration for a connector module | |
| that is already deployed, the connector module deployment is restarted | |
| with the new configuration properties. | |
| [[bealt]][[GSDVG00477]][[security-maps]] | |
| ==== Security Maps | |
| Create a security map for a connector connection pool to map an | |
| application principal or a user group to a back end EIS principal. The | |
| security map is usually used in situations where one or more EIS back | |
| end principals are used to execute operations (on the EIS) initiated by | |
| various principals or user groups in the application. | |
| To create or update security maps for a connector connection pool: | |
| * In the Administration Console, open the Resources component, select | |
| Connectors, select Connector Connection Pools, and select the Security | |
| Maps tab. For details, click the Help button in the Administration | |
| Console. | |
| * Use the `asadmin create-connector-security-map` command. For details, | |
| see the link:reference-manual.html#GSRFM[{productName} Reference | |
| Manual]. | |
| If a security map already exists for a connector connection pool, the | |
| new security map is appended to the previous one. The connector security | |
| map configuration supports the use of the wildcard asterisk (`*`) to | |
| indicate all users or all user groups. | |
| When an application principal initiates a request to an EIS, the | |
| {productName} first checks for an exact match to a mapped back end | |
| EIS principal using the security map defined for the connector | |
| connection pool. If there is no exact match, the {productName} uses | |
| the wild card character specification, if any, to determined the mapped | |
| back end EIS principal. | |
| [[giqgt]][[GSDVG00478]][[work-security-maps]] | |
| ==== Work Security Maps | |
| A work security map for a resource adapter maps an EIS principal or | |
| group to a application principal or group. A work security map is useful | |
| in situations where one or more application principals execute | |
| operations initiated by principals or user groups in the EIS. A resource | |
| adapter can have multiple work security maps. A work security map can | |
| map either principals or groups, but not both. | |
| To create a work security map, use the | |
| `asadmin create-connector-work-security-map` command. For details, see | |
| the link:reference-manual.html#GSRFM[{productName} Reference Manual]. | |
| The work security map configuration supports the wildcard asterisk (`*`) | |
| character to indicate all users or all user groups. When an EIS | |
| principal sends a request to the {productName}, the {productName} | |
| first checks for an exact match to a mapped application principal using | |
| the work security map defined for the resource adapter. If there is no | |
| exact match, the {productName} uses the wild card character | |
| specification, if any, to determine the application principal. | |
| [[bealu]][[GSDVG00479]][[overriding-configuration-properties]] | |
| ==== Overriding Configuration Properties | |
| You can override the properties (`config-property` elements) specified | |
| in the `ra.xml` file of a resource adapter: | |
| * In the Administration Console, open the Resources component and select | |
| Resource Adapter Configs. Create a new resource adapter configuration or | |
| select an existing one to edit. Then enter property names and values in | |
| the Additional Properties table. For details, click the Help button in | |
| the Administration Console. | |
| * Use the `asadmin create-resource-adapter-config` command to create a | |
| configuration for a resource adapter. Use this command's `--property` | |
| option to specify a name-value pair for a resource adapter property. For | |
| details, see the link:reference-manual.html#GSRFM[{productName} | |
| Reference Manual]. | |
| You can specify configuration properties either before or after resource | |
| adapter deployment. If you specify properties after deploying the | |
| resource adapter, the existing resource adapter is restarted with the | |
| new properties. | |
| You can also use token replacement for overriding resource adapter | |
| configuration properties in individual server instances when the | |
| resource adapter is deployed to a cluster. For example, for a property | |
| called `inboundPort`, you can assign the value `${inboundPort}`. You can | |
| then assign a different value to this property for each server instance. | |
| Changes to system properties take effect upon server restart. | |
| [[bealv]][[GSDVG00480]][[testing-a-connector-connection-pool]] | |
| ==== Testing a Connector Connection Pool | |
| You can test a connector connection pool for usability in one of these | |
| ways: | |
| * In the Administration Console, open the Resources component, open the | |
| Connector component, select Connection Pools, and select the connection | |
| pool you want to test. Then select the Ping button in the top right | |
| corner of the page. For details, click the Help button in the | |
| Administration Console. | |
| * Use the `asadmin ping-connection-pool` command. For details, see the | |
| link:reference-manual.html#GSRFM[{productName} Reference Manual]. | |
| Both these commands fail and display an error message unless they | |
| successfully connect to the connection pool. | |
| You can also specify that a connection pool is automatically tested when | |
| created or reconfigured by setting the Ping attribute to `true` (the | |
| default is `false`) in one of the following ways: | |
| * Enter a Ping value in the Connector Connection Pools page in the | |
| Administration Console. For more information, click the Help button in | |
| the Administration Console. | |
| * Specify the `--ping` option in the | |
| `asadmin create-connector-connection-pool` command. For more | |
| information, see the link:reference-manual.html#GSRFM[{productName} | |
| Reference Manual]. | |
| [[gizcv]][[GSDVG00481]][[flushing-a-connector-connection-pool]] | |
| ==== Flushing a Connector Connection Pool | |
| Flushing a connector connection pool recreates all the connections in | |
| the pool and brings the pool to the steady pool size without the need | |
| for reconfiguring the pool. Connection pool reconfiguration can result | |
| in application redeployment, which is a time-consuming operation. | |
| Flushing destroys existing connections, and any existing transactions | |
| are lost and must be retired. | |
| You can flush a connector connection pool in one of these ways: | |
| * In the Administration Console, open the Resources component, open the | |
| Connector component, select Connection Pools, and select the connection | |
| pool you want to flush. Then select the Flush button in the top right | |
| corner of the page. For details, click the Help button in the | |
| Administration Console. | |
| * Use the `asadmin flush-connection-pool` command. For details, see the | |
| link:reference-manual.html#GSRFM[{productName} Reference Manual]. | |
| [[bealw]][[GSDVG00482]][[handling-invalid-connections]] | |
| ==== Handling Invalid Connections | |
| If a resource adapter generates a `ConnectionErrorOccured` event, the | |
| {productName} considers the connection invalid and removes the | |
| connection from the connection pool. Typically, a resource adapter | |
| generates a `ConnectionErrorOccured` event when it finds a | |
| `ManagedConnection` object unusable. Reasons can be network failure with | |
| the EIS, EIS failure, fatal problems with the resource adapter, and so | |
| on. | |
| If the `fail-all-connections` setting in the connection pool | |
| configuration is set to `true`, and a single connection fails, all | |
| connections are closed and recreated. If this setting is `false`, | |
| individual connections are recreated only when they are used. The | |
| default is `false`. | |
| The `is-connection-validation-required` setting specifies whether | |
| connections have to be validated before being given to the application. | |
| If a resource's validation fails, it is destroyed, and a new resource is | |
| created and returned. The default is `false`. | |
| The `prefer-validate-over-recreate` property specifies that validating | |
| idle connections is preferable to closing them. This property has no | |
| effect on non-idle connections. If set to `true`, idle connections are | |
| validated during pool resizing, and only those found to be invalid are | |
| destroyed and recreated. If `false`, all idle connections are destroyed | |
| and recreated during pool resizing. The default is `false`. | |
| You can set the `fail-all-connections`, | |
| `is-connection-validation-required`, and `prefer-validate-over-recreate` | |
| configuration settings during creation of a connector connection pool. | |
| Or, you can use the `asadmin set` command to dynamically reconfigure a | |
| setting. For example: | |
| [source] | |
| ---- | |
| asadmin set server.resources.connector-connection-pool.CCP1.fail-all-connections="true" | |
| asadmin set server.resources.connector-connection-pool.CCP1.is-connection-validation-required="true" | |
| asadmin set server.resources.connector-connection-pool.CCP1.property.prefer-validate-over-recreate="true" | |
| ---- | |
| For details, see the link:reference-manual.html#GSRFM[{productName} | |
| Reference Manual]. | |
| The interface ValidatingManagedConnectionFactory exposes the method | |
| `getInvalidConnections` to allow retrieval of the invalid connections. | |
| The {productName} checks if the resource adapter implements this | |
| interface, and if it does, invalid connections are removed when the | |
| connection pool is resized. | |
| [[bealx]][[GSDVG00483]][[setting-the-shutdown-timeout]] | |
| ==== Setting the Shutdown Timeout | |
| According to the Connector specification, while an application server | |
| shuts down, all resource adapters should be stopped. A resource adapter | |
| might hang during shutdown, since shutdown is typically a resource | |
| intensive operation. To avoid such a situation, you can set a timeout | |
| that aborts resource adapter shutdown if exceeded. The default timeout | |
| is 30 seconds per resource adapter module. To configure this timeout: | |
| * In the Administration Console, select Connector Service under the | |
| relevant configuration and edit the shutdown Timeout field. For details, | |
| click the Help button in the Administration Console. | |
| * Use the following `asadmin set` command: | |
| + | |
| [source] | |
| ---- | |
| asadmin set server.connector-service.shutdown-timeout-in-seconds="num-secs" | |
| ---- | |
| For details, see the link:reference-manual.html#GSRFM[{productName} | |
| Reference Manual]. | |
| The {productName} deactivates all message-driven bean deployments | |
| before stopping a resource adapter. | |
| [[gjjyy]][[GSDVG00484]][[specifying-the-class-loading-policy]] | |
| ==== Specifying the Class Loading Policy | |
| Use the `class-loading-policy` setting to determine which resource | |
| adapters accessible to applications. Allowed values are: | |
| * `derived` — Applications access resource adapters based on references | |
| in their deployment descriptors. These references can be `resource-ref`, | |
| `resource-env-ref`, `resource-adapter-mid`, or equivalent annotations. | |
| * `global` — All stand-alone resource adapters are available to all | |
| applications. | |
| To configure this setting, use the `asadmin set` command. For example: | |
| [source] | |
| ---- | |
| asadmin set server.connector-service.class-loading-policy="global" | |
| ---- | |
| For details, see the link:reference-manual.html#GSRFM[{productName} | |
| Reference Manual]. | |
| [[bealy]][[GSDVG00485]][[using-last-agent-optimization-of-transactions]] | |
| ==== Using Last Agent Optimization of Transactions | |
| Transactions that involve multiple resources or multiple participant | |
| processes are distributed or global transactions. A global transaction | |
| can involve one non-XA resource if last agent optimization is enabled. | |
| Otherwise, all resources must be XA. For more information about | |
| transactions in the {productName}, see | |
| link:transaction-service.html#beanm[Using the Transaction Service]. | |
| The Connector specification requires that if a resource adapter supports | |
| `XATransaction`, the `ManagedConnection` created from that resource | |
| adapter must support both distributed and local transactions. Therefore, | |
| even if a resource adapter supports `XATransaction`, you can configure | |
| its connector connection pools as non-XA or without transaction support | |
| for better performance. A non-XA resource adapter becomes the last agent | |
| in the transactions in which it participates. | |
| The value of the connection pool configuration property | |
| `transaction-support` defaults to the value of the `transaction-support` | |
| property in the `ra.xml` file. The connection pool configuration | |
| property can override the `ra.xml` file property if the transaction | |
| level in the connection pool configuration property is lower. If the | |
| value in the connection pool configuration property is higher, it is | |
| ignored. | |
| [[gizba]][[GSDVG00486]][[disabling-pooling-for-a-connection]] | |
| ==== Disabling Pooling for a Connection | |
| To disable connection pooling, set the Pooling attribute to false. The | |
| default is true. You can enable or disable connection pooling in one of | |
| the following ways: | |
| * Enter a Pooling value in the Connector Connection Pools page in the | |
| Administration Console. For more information, click the Help button in | |
| the Administration Console. | |
| * Specify the `--pooling` option in the | |
| `asadmin create-connector-connection-pool` command. For more | |
| information, see the link:reference-manual.html#GSRFM[{productName} | |
| Reference Manual]. | |
| [[gizcs]][[GSDVG00487]][[using-application-scoped-connectors]] | |
| ==== Using Application-Scoped Connectors | |
| You can define an application-scoped connector or other resource for an | |
| enterprise application, web module, EJB module, connector module, or | |
| application client module by supplying a `glassfish-resources.xml` | |
| deployment descriptor file. For details, see | |
| "link:application-deployment-guide/deploying-applications.html#GSDPG00075[Application-Scoped Resources]" in {productName} Application Deployment Guide. | |
| [[bealz]][[GSDVG00164]][[inbound-communication-support]] | |
| === Inbound Communication Support | |
| The Connector specification defines the transaction and message inflow | |
| system contracts for achieving inbound connectivity from an EIS. The | |
| message inflow contract also serves as a standard message provider | |
| pluggability contract, thereby allowing various message providers to | |
| seamlessly plug in their products with any application server that | |
| supports the message inflow contract. In the inbound communication | |
| model, the EIS initiates all communication to an application. An | |
| application can be composed of enterprise beans (session, entity, or | |
| message-driven beans), which reside in an EJB container. | |
| Incoming messages are received through a message endpoint, which is a | |
| message-driven bean. This message-driven bean asynchronously consumes | |
| messages from a message provider. An application can also synchronously | |
| send and receive messages directly using messaging style APIs. | |
| A resource adapter supporting inbound communication provides an instance | |
| of an `ActivationSpec` JavaBean class for each supported message | |
| listener type. Each class contains a set of configurable properties that | |
| specify endpoint activation configuration information during | |
| message-driven bean deployment. The required `config-property` element | |
| in the `ra.xml` file provides a list of configuration property names | |
| required for each activation specification. An endpoint activation fails | |
| if the required property values are not specified. Values for the | |
| properties that are overridden in the message-driven bean's deployment | |
| descriptor are applied to the `ActivationSpec` JavaBean when the | |
| message-driven bean is deployed. | |
| Administered objects can also be specified for a resource adapter, and | |
| these JavaBeans are specific to a messaging style or message provider. | |
| For example, some messaging styles may need applications to use special | |
| administered objects (such as Queue and Topic objects in JMS). | |
| Applications use these objects to send and synchronously receive | |
| messages using connection objects using messaging style APIs. For more | |
| information about administered objects, see link:jms.html#beaob[Using the | |
| Java Message Service]. | |
| [[gizdm]][[GSDVG00165]][[outbound-communication-support]] | |
| === Outbound Communication Support | |
| The Connector specification defines the system contracts for achieving | |
| outbound connectivity from an EIS. A resource adapter supporting | |
| outbound communication provides an instance of a | |
| `ManagedConnectionFactory` JavaBean class. A `ManagedConnectionFactory` | |
| JavaBean represents outbound connectivity information to an EIS instance | |
| from an application. | |
| The 1.6 Connector specification introduces a mechanism through which the | |
| transaction level of a `ManagedConnectionFactory` can be detected at | |
| runtime. During the configuration of a `ManagedConnectionFactory` in the | |
| Connector Connection Pools page in the Administration Console, the | |
| Administration Console can instantiate the `ManagedConnectionFactory` | |
| and show the level of transaction support. The three levels are `no-tx`, | |
| `local-tx`, `xa-tx`. If a `ManagedConnectionFactory` returns `local-tx` | |
| as the level it can support, it is assumed that `xa-tx` is not | |
| supported, and the Administration Console shows only `no-tx` and | |
| `local-tx` as the available support levels. | |
| For more information, click the Help button in the Administration | |
| Console. | |
| [[beama]][[GSDVG00166]][[configuring-a-message-driven-bean-to-use-a-resource-adapter]] | |
| === Configuring a Message Driven Bean to Use a Resource Adapter | |
| The Connectors specification's message inflow contract provides a | |
| generic mechanism to plug in a wide-range of message providers, | |
| including JMS, into a Java-EE-compatible application server. Message | |
| providers use a resource adapter and dispatch messages to message | |
| endpoints, which are implemented as message-driven beans. | |
| The message-driven bean developer provides activation configuration | |
| information in the message-driven bean's `ejb-jar.xml` file. | |
| Configuration information includes messaging-style-specific | |
| configuration details, and possibly message-provider-specific details as | |
| well. The message-driven bean deployer uses this configuration | |
| information to set up the activation specification JavaBean. The | |
| activation configuration properties specified in `ejb-jar.xml` override | |
| configuration properties in the activation specification definition in | |
| the `ra.xml` file. | |
| According to the EJB specification, the messaging-style-specific | |
| descriptor elements contained within the activation configuration | |
| element are not specified because they are specific to a messaging | |
| provider. In the following sample message-driven bean `ejb-jar.xml`, a | |
| message-driven bean has the following activation configuration property | |
| names: `destinationType`, `SubscriptionDurability`, and | |
| `MessageSelector`. | |
| [source,xml] | |
| ---- | |
| <!-- A sample MDB that listens to a JMS Topic --> | |
| <!-- message-driven bean deployment descriptor --> | |
| ... | |
| <activation-config> | |
| <activation-config-property> | |
| <activation-config-property-name> | |
| destinationType | |
| </activation-config-property-name> | |
| <activation-config-property-value> | |
| jakarta.jms.Topic | |
| </activation-config-property-value> | |
| </activation-config-property> | |
| <activation-config-property> | |
| <activation-config-property-name> | |
| SubscriptionDurability | |
| </activation-config-property-name> | |
| <activation-config-property-value> | |
| Durable | |
| </activation-config-property-value> | |
| </activation-config-property> | |
| <activation-config-property> | |
| <activation-config-property-name> | |
| MessageSelector | |
| </activation-config-property-name> | |
| <activation-config-property-value> | |
| JMSType = 'car' AND color = 'blue' | |
| </activation-config-property-value> | |
| </activation-config-property> | |
| ... | |
| </activation-config> | |
| ... | |
| ---- | |
| When the message-driven bean is deployed, the value for the | |
| `resource-adapter-mid` element in the `glassfish-ejb-jar.xml` file is | |
| set to the resource adapter module name that delivers messages to the | |
| message endpoint (to the message-driven bean). In the following example, | |
| the `jmsra` JMS resource adapter, which is the bundled resource adapter | |
| for the Message Queue message provider, is specified as the resource | |
| adapter module identifier for the `SampleMDB` bean. | |
| [source,xml] | |
| ---- | |
| <glassfish-ejb-jar> | |
| <enterprise-beans> | |
| <unique-id>1</unique-id> | |
| <ejb> | |
| <ejb-name>SampleMDB</ejb-name> | |
| <jndi-name>SampleQueue</jndi-name> | |
| <!-- JNDI name of the destination from which messages would be | |
| delivered from MDB needs to listen to --> | |
| ... | |
| <mdb-resource-adapter> | |
| <resource-adapter-mid>jmsra</resource-adapter-mid> | |
| <!-- Resource Adapter Module Id that would deliver messages to | |
| this message endpoint --> | |
| </mdb-resource-adapter> | |
| ... | |
| </ejb> | |
| ... | |
| </enterprise-beans> | |
| ... | |
| </glassfish-ejb-jar> | |
| ---- | |
| When the message-driven bean is deployed, the {productName} uses the | |
| `resourceadapter-mid` setting to associate the resource adapter with a | |
| message endpoint through the message inflow contract. This message | |
| inflow contract with the {productName} gives the resource adapter a | |
| handle to the `MessageEndpointFactory` and the `ActivationSpec` | |
| JavaBean, and the adapter uses this handle to deliver messages to the | |
| message endpoint instances (which are created by the | |
| `MessageEndpointFactory`). | |
| When a message-driven bean first created for use on the {productName} | |
| 7 is deployed, the Connector runtime transparently transforms the | |
| previous deployment style to the current connector-based deployment | |
| style. If the deployer specifies neither a `resource-adapter-mid` | |
| element nor the Message Queue resource adapter's activation | |
| configuration properties, the Connector runtime maps the message-driven | |
| bean to the `jmsra` system resource adapter and converts the | |
| JMS-specific configuration to the Message Queue resource adapter's | |
| activation configuration properties. | |