Welcome!

Weblogic Authors: Yeshim Deniz, Elizabeth White, Michael Meiner, Michael Bushong, Avi Rosenthal

Related Topics: Weblogic

Weblogic: Article

Advanced JMS Design Patterns for WebLogic Server Environments

Advanced JMS Design Patterns for WebLogic Server Environments

BEA WebLogic Server (WLS) is the most widely deployed J2EE application server and continues to be an attractive platform for many enterprise-class situations.

As part of its support for J2EE 1.3, WLS now embeds a Java Message Service (JMS). The implementation is straightforward; using many built-in WLS features, it proves worthy at moderate scale in predominantly WLS environments.

Despite the inclusion of a new JMS implementation, there remain instances where heterogeneity, scalability, and availability requirements go beyond native support, calling for increased sophistication provided by third-party messaging solutions. For example, when multiple brands of application servers, C clients, or non-Java legacy applications are involved, a solution with broader platform coverage is required. If specialized features like client-side persistence or large-message support are necessary, niche solutions may be most suitable. If extreme throughput scalability or high availability via clustering, routing, and failover are critical, enterprise architects must turn to pure-play messaging vendors.

While implementing a third-party JMS has many advantages in highly scaled, mission-critical settings, it carries a bit more complexity than simple out-of-box configuration - especially when Enterprise JavaBeans (EJBs) and XA Container-Managed Transactions (CMT) are involved. The issues stem from two principal concerns: first, the manner in which WLS 6.x implements the Java Transaction API (JTA) and Java Transaction Service (JTS); and second, the way JMS and J2EE application servers interrelate with respect to runtime and development-time questions. On the first issue, cooperation from the JMS vendor is necessary for a solution (unless the JMS exposes its internal transaction APIs - read: open source). On the second issue, various design patterns can augment JMS vendor-provided tools for a complete solution.

This article explores third-party JMS integration with WLS and addresses the two issues outlined above by exposing Sonic Software's approach to implementing the SonicMQ WLSAdapter. We'll review how XA transactions implemented by the SonicMQ JMS are properly mapped to the nonstandard WLS JTA and illustrate how to deal with problems surrounding client reconnect, JNDI loading, exception handling, and complex EJB interactions.

WLS XA Transactions with Third-Party JMS
Global Transaction (XA) support, or CMT, presents unique, complex issues. When WLS EJBs use a foreign JMS to send or receive messages, and both attempt to participate in a common XA transaction, it usually fails. This is because the WLS 6.x JTA and JTS are implemented in a nonstandard way.

According to the JMS specification, a JMS provider must comply with the JTA specification and its rules for creation and use of XA resources, namely the XAConnectionFactory, XAConnection, and XASession objects. Similarly, the JMS must conform to the JTA standard for providing XAResource objects directly from an XASession object (for more details see Chapter 8 of the JMS 1.0.2.b Specification at http://java.sun.com/products/jms/docs.html).

Virtually all third-party JMS products meet these criteria, and they expect the application server, which acts as a JMS client, to adhere to the same JMS specification for a successful XA-compliant operation. WLS addresses four issues dealing with XA transactions.

1. No XAConnectionFactory, XAConnection, or XASession
When a J2EE application server sets up an XA transaction, it's supposed to use the XAQueueConnectionFactory or XATopicConnectionFactory objects from an external JMS provider to create XAConnection and XASession objects. Instead, WLS creates only standard JMS connection and session objects. As a result, steps specific to XA transactions and "Chapter-8 compliance" aren't implemented.

2. XAResource Is Never Enlisted
In order for an XA transaction to take place, an XAResource must be enlisted to begin the transaction. Because WLS doesn't use the third-party JMS provider XAConnectionFactory objects, it can't properly obtain an XAResource object to enlist. Thus, in a message-driven bean (MDB), where the enlistment should take place automatically under control of the application server, the external JMS XAResources are never actually enlisted into the CMT. Likewise, a session bean can't explicitly enlist the XAResource either - an XAResource can't be created in the first place.

3. Proprietary Session Interface
WLS requires that the session object of the external JMS implement a specific proprietary interface, weblogic.jms.extensions.MDBTransaction. This interface contains a method, associateTransaction(), that will be called by WLS to join the JMS transaction manager in the CMT. Because this interface isn't standard, third-party JMS providers must include an adapter to implement the method. Internally, WLS checks to see that a session object supports the interface; if not, the container throws an exception.

4. XA Transaction Branches Aren't Serialized
According to the JTA specification, all branches of a common XA transaction must be in serial order. However, WLS manages transaction branches in a way that allows a second transaction branch, provided to the container by an outboard transaction manager, to begin before other transaction branches have completed. This occurs because WLS transactions start and end branches in different threads. The "start" thread may have completed its actions, allowing the next transaction branch to start, while the "end" actions from the first transaction branch may not yet have completed. JMS 1.0.2-compliant products expect XA branches to be in serial order according to the JTA specification and consider any overlapping transaction branches to be a violation of JTA protocol. Thus, compliant JMS implementations will throw an exception when transactions are permitted to overlap, unless the JMS vendor provides an alternative nonstandard implementation.

Enter WebLogic Server Adapter (WLSAdapter)
Despite the issues, third-party JMS providers who intend to participate in the WebLogic market have clear incentives to provide integration solutions. Most vendors do this by including adapters to reconcile differences between JMS Chapter-8 compliance and the "isms" characteristic of the current WLS release. Adapter implementations are distinguished not only by the robustness with which they address XA functionality, but also by how they carry through to enable truly elegant and scalable solutions.

Enter the WLSAdapter from Sonic Software - a solution that resolves integration issues between WLS and SonicMQ, a leading enterprise messaging platform. This implementation addresses other key integration challenges as well, including:

  • Automating client reconnect and JNDI loading
  • Facilitating development-time failure injection for testing of exception-handling logic
  • Providing a robust set of template design patterns for sophisticated JMS architectures

    XA Transaction Integration
    If an application server is to provide XA transactions alongside a third-party JMS, it must be able to:

    • Create and manage JMS connections and sessions
    • Create and manage XAConnections and XASessions
    • Enlist the XAResource.
    While WLS can create and manage JMS connections, it can't create XA transactions or enlist XAResources. To resolve this problem, WLSAdapter creates and manages all XAConnectionFactories, XAConnections, XASessions, and XAResources.

    When the WLSAdapter creates an XASession, it also creates a single XAResource object inside a JVM (singleton), which is presented to the WLS transaction manager for each XA transaction. The real XAResources, provided within the JMS transaction manager, are created by WLSAdapter and registered with the singleton, which in turn delegates all WLS transaction manager calls to the appropriate SonicMQ XAResource. The adapter manages all SonicMQ XA branches internally. In MDBs, the WLSAdapter automatically enlists the XAResource on each transaction, while session beans explicitly enlist XAResources via the WLS TxHelper, javax.transaction.Transaction txn = weblogic.transaction.TxHelper.getTransaction(), and a direct call to the enlist method txn.enlistResource(myXAResource).

    The result is equivalent to the JMS adapter providing a small transaction manager to participate as a single resource for the WLS transaction manager. And, since an XA resource can now be obtained for the WLS transaction manager, issues 1 and 2 are resolved.

    The WLSAdapter addresses issue 3 by implementing the BEA proprietary interface, MDBTransaction, in its session object and uses the associateTransaction() method to trigger automatic enlistment from MDB transactions. Because the method is now implemented in the adapter XA session object, the WLS exceptions are no longer thrown.

    Finally, the WLSAdapter addresses issue 4 by managing XA transaction branches so they remain completely serialized. It does this by catching SonicMQ exceptions whenever WLS allows a transaction branch overlap, and holding the overlapping branch until the previous one has completed. Only then does it permit the next transaction branch to be started. Exceptions are masked, branch overlap is avoided, and XA transactions conform to the JTA Specification.

    With the WLSAdapter for SonicMQ, all four of the WLS XA-compliance issues are resolved, providing a fully JTA-compliant Global Transaction solution within an enterprise-class JMS.

    Other Integration Challenges
    Runtime and Development-Time Considerations

    The introduction of an adapter presents an opportunity to incorporate various value-added features that enhance the robustness of an enterprise solution. Key considerations include automating runtime reconnection around failed brokers or links and providing facilities for testing application-level exception handling (particularly connection- and transaction-level recovery logic).

    Automatic Client Reconnect
    Reconnection and failover capabilities are important to any large-scale distributed application. Both WebLogic and SonicMQ provide clustering and reconnection capabilities. Figure 1 represents a typical WebLogic clustering configuration with two servers in a cluster.

    Topic A and Topic B can be accessed from any WLS in the cluster. However, the topics must be created in advance, and topic information is tied locally to a particular server.

    In the event Instance A goes down, traffic will be routed to the remaining server in the cluster. However, Topic A will no longer be accessible.

    Figure 2 shows a WebLogic cluster and a SonicMQ cluster working together to leverage the reconnect capabilities of WLSAdapter.

    In this example, if either of the WLS instances fails, all topics will still be available through SonicMQ. In addition, if either of the SonicMQ brokers goes down, they'll automatically fail over to the backup server or servers, and topic information won't be lost. When WLSAdapter is used in a SonicMQ cluster, topics can be dynamically created and information is shared across the JMS cluster.

    To accomplish a reconnect in the first example (which doesn't use WLSAdapter), a producer or a synchronous consumer in an EJB would have to trap the exception inside the application logic when the broker goes down and explicitly reconnect and reconstitute all the connection and session objects.

    WLS does recreate a reconnection within an MDB; however, the listener isn't recreated and the messages can be lost. The solution provided by WLSAdapter:

  • Completely hides the connection failure from the user
  • Relies on the URL list to reestablish a connection
  • Ensures the session is recreated as well as the producers and consumers

    Since the connection failure and the reconnect are completely transparent to the user and business logic, the developer is freed from writing code to manage reconnect scenarios.

    Failure Insertion Points
    WLSAdapter can insert failure points for debugging and analysis. The advantages geared to development time address one of the most daunting aspects of integration testing - introducing controlled but realistic failures to test exception-handling pathways. WLSAdapter provides two types of failure injection: connection drop failure points and method failures.

    Connection-Drop Failure
    A connection-drop failure pauses the application in a specified method. This way, an external action can be taken by the developer to have an effect at a specific point in the execution of the application.

    For example, to test application behavior when a broker goes down or a connection fails, randomly pulling cables or "killing" a broker won't provide a reliably reproducible test case. However, using the SonicMQ WLSAdapter, you can isolate the failure occurrences by forcing a connection-drop failure to occur during the execution of a particular method, for example the onMessage() method of an MDB. When the method is called, the application will be paused by the adapter. At that point you can force a broker to disconnect and simulate the problem. After releasing the failure point, execution of the application resumes to reveal how the exception logic copes with the situation.

    Method Failure
    A method failure is similar in design, but it simply forces a particular exception to be thrown from a specific method rather than requiring developer intervention (such as killing a broker or pulling a cable). When a method failure point is set, the application will pause when it reaches the method specified. There the option is offered to have that method raise an exception, or continue normally.

    There are 10 methods in which you can set a connection-drop or method failure. Five of them are for JMS methods, and five are specifically for XA transactions. An application simply needs to implement the method in question for the WLSAdapter to execute it and inject a failure point; thus, no temporary test logic needs to be embedded within the application code. Table 1 lists the JMS and XA methods where failure insertion may occur.

    Using failure point insertion in WebLogic is as simple as including the WLSAdapter package in the classpath of the WebLogic domain startup and adding the appropriate flags to the application server start-up:

    -DSonicsw.WLSAdapter.Test.DoFail=true
    -DSonicsw.WLSAdapter.Test.FailType=%1
    -DSonicsw.WLSAdapter.Test.FailPoint=%2

    The parameter %1 would be either "ConnectionDrop" or "MethodFailure", and %2 would represent one of the methods listed in Table 1.

    Enterprise-Class Design Patterns
    Value-added features can be included with adapter packages in templates that implement advanced transactional design patterns. Often enterprise-level EJB scenarios employing JMS require several beans to interact transactionally. These complex scenarios necessitate clever construction for robustness and some form of session pooling for scalability.

    For example, a common circumstance might be to have an MDB acting as a consumer to a Pub/Sub topic listening for RFPs. When an RFP message arrives, it might process the document into a local database via an entity bean, and then a session bean to produce a proposal for transmission over a point-to-point queue back to the proposal requestor. In a high throughput environment, the outbound queue transmission might pool session beans to improve scalability. In this complex arrangement, the MDB, entity bean, and session beans must all become part of a single transaction, where two of the beans are interacting with the JMS transaction manager.

    The WLSAdapter uniquely answers questions surrounding these enterprise-grade problems. It does so by including prebuilt code templates that implement design patterns suitable for supporting multibean interactions. Solutions are illustrated for consumers and producers, along with a robust, yet lightweight, pooling mechanism for stateless session beans.

    Looking Ahead
    There are five primary transactional-JMS design patterns included in the Sonic WLSAdapter (illustrated in Figure 3). These include:

    • Message-Driven Bean
    • Message-Driven Bean Router
    • Message-Producing Bean
    • Message-Consuming Bean
    • Message-Consuming Bean Router
    Conclusion
    In part 2 of this article we'll describe the implementation of a few of these design patterns inside WLS using SonicMQ and the WLSAdapter as the JMS solution. The specific implementations covered will include:
    • Message-driven bean (with a queue listener)
    • Message-driven bean (with a topic listener and reconnect)
    • Message-consumer bean
    • Message-producing bean (with cross-JMS domain XA and reconnect)
    We'll summarize with a description of a composite design pattern employing a multibean interaction along the lines of the RFI/RFP example described above.
  • More Stories By Hub Vandervoort

    Hub Vandervoort is vice president of Professional Services for Sonic Software. He has over twenty years experience as a consultant and senior technology executive in the networking, communications software, and Internet industries. Vandervoort previously co-founded three start-up ventures, including early message-oriented middleware (MOM) leader Horizon Strategies, Inc., which he merged with Momentum Software Corporation. He also co-founded, and served as board member of the Message-Oriented-Middleware Association (MOMA).

    More Stories By Jake Yara

    Jake Yara is an independent software consultant working with Sonic Software to implement application server-specific solutions for the leading EJB application servers on the market. In February of 2000 he founded Yara, Inc., which provides consulting services for the development and deployment of commercial client-server and web applications. [email protected]

    Comments (0)

    Share your thoughts on this story.

    Add your comment
    You must be signed in to add a comment. Sign-in | Register

    In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


    @ThingsExpo Stories
    To Really Work for Enterprises, MultiCloud Adoption Requires Far Better and Inclusive Cloud Monitoring and Cost Management … But How? Overwhelmingly, even as enterprises have adopted cloud computing and are expanding to multi-cloud computing, IT leaders remain concerned about how to monitor, manage and control costs across hybrid and multi-cloud deployments. It’s clear that traditional IT monitoring and management approaches, designed after all for on-premises data centers, are falling short in ...
    Organizations planning enterprise data center consolidation and modernization projects are faced with a challenging, costly reality. Requirements to deploy modern, cloud-native applications simultaneously with traditional client/server applications are almost impossible to achieve with hardware-centric enterprise infrastructure. Compute and network infrastructure are fast moving down a software-defined path, but storage has been a laggard. Until now.
    DXWorldEXPO LLC announced today that the upcoming DXWorldEXPO | CloudEXPO New York event will feature 10 companies from Poland to participate at the "Poland Digital Transformation Pavilion" on November 12-13, 2018.
    Digital Transformation is much more than a buzzword. The radical shift to digital mechanisms for almost every process is evident across all industries and verticals. This is often especially true in financial services, where the legacy environment is many times unable to keep up with the rapidly shifting demands of the consumer. The constant pressure to provide complete, omnichannel delivery of customer-facing solutions to meet both regulatory and customer demands is putting enormous pressure on...
    The best way to leverage your CloudEXPO | DXWorldEXPO presence as a sponsor and exhibitor is to plan your news announcements around our events. The press covering CloudEXPO | DXWorldEXPO will have access to these releases and will amplify your news announcements. More than two dozen Cloud companies either set deals at our shows or have announced their mergers and acquisitions at CloudEXPO. Product announcements during our show provide your company with the most reach through our targeted audienc...
    In an era of historic innovation fueled by unprecedented access to data and technology, the low cost and risk of entering new markets has leveled the playing field for business. Today, any ambitious innovator can easily introduce a new application or product that can reinvent business models and transform the client experience. In their Day 2 Keynote at 19th Cloud Expo, Mercer Rowe, IBM Vice President of Strategic Alliances, and Raejeanne Skillern, Intel Vice President of Data Center Group and ...
    More and more brands have jumped on the IoT bandwagon. We have an excess of wearables – activity trackers, smartwatches, smart glasses and sneakers, and more that track seemingly endless datapoints. However, most consumers have no idea what “IoT” means. Creating more wearables that track data shouldn't be the aim of brands; delivering meaningful, tangible relevance to their users should be. We're in a period in which the IoT pendulum is still swinging. Initially, it swung toward "smart for smart...
    DXWorldEXPO LLC announced today that All in Mobile, a mobile app development company from Poland, will exhibit at the 22nd International CloudEXPO | DXWorldEXPO. All In Mobile is a mobile app development company from Poland. Since 2014, they maintain passion for developing mobile applications for enterprises and startups worldwide.
    @DevOpsSummit at Cloud Expo, taking place November 12-13 in New York City, NY, is co-located with 22nd international CloudEXPO | first international DXWorldEXPO and will feature technical sessions from a rock star conference faculty and the leading industry players in the world.
    In his keynote at 19th Cloud Expo, Sheng Liang, co-founder and CEO of Rancher Labs, discussed the technological advances and new business opportunities created by the rapid adoption of containers. With the success of Amazon Web Services (AWS) and various open source technologies used to build private clouds, cloud computing has become an essential component of IT strategy. However, users continue to face challenges in implementing clouds, as older technologies evolve and newer ones like Docker c...
    DXWorldEXPO LLC announced today that ICC-USA, a computer systems integrator and server manufacturing company focused on developing products and product appliances, will exhibit at the 22nd International CloudEXPO | DXWorldEXPO. DXWordEXPO New York 2018, colocated with CloudEXPO New York 2018 will be held November 11-13, 2018, in New York City. ICC is a computer systems integrator and server manufacturing company focused on developing products and product appliances to meet a wide range of ...
    Coca-Cola’s Google powered digital signage system lays the groundwork for a more valuable connection between Coke and its customers. Digital signs pair software with high-resolution displays so that a message can be changed instantly based on what the operator wants to communicate or sell. In their Day 3 Keynote at 21st Cloud Expo, Greg Chambers, Global Group Director, Digital Innovation, Coca-Cola, and Vidya Nagarajan, a Senior Product Manager at Google, discussed how from store operations and ...
    We are seeing a major migration of enterprises applications to the cloud. As cloud and business use of real time applications accelerate, legacy networks are no longer able to architecturally support cloud adoption and deliver the performance and security required by highly distributed enterprises. These outdated solutions have become more costly and complicated to implement, install, manage, and maintain.SD-WAN offers unlimited capabilities for accessing the benefits of the cloud and Internet. ...
    Headquartered in Plainsboro, NJ, Synametrics Technologies has provided IT professionals and computer systems developers since 1997. Based on the success of their initial product offerings (WinSQL and DeltaCopy), the company continues to create and hone innovative products that help its customers get more from their computer applications, databases and infrastructure. To date, over one million users around the world have chosen Synametrics solutions to help power their accelerated business or per...
    Founded in 2000, Chetu Inc. is a global provider of customized software development solutions and IT staff augmentation services for software technology providers. By providing clients with unparalleled niche technology expertise and industry experience, Chetu has become the premiere long-term, back-end software development partner for start-ups, SMBs, and Fortune 500 companies. Chetu is headquartered in Plantation, Florida, with thirteen offices throughout the U.S. and abroad.
    Dion Hinchcliffe is an internationally recognized digital expert, bestselling book author, frequent keynote speaker, analyst, futurist, and transformation expert based in Washington, DC. He is currently Chief Strategy Officer at the industry-leading digital strategy and online community solutions firm, 7Summits.
    Bill Schmarzo, author of "Big Data: Understanding How Data Powers Big Business" and "Big Data MBA: Driving Business Strategies with Data Science," is responsible for setting the strategy and defining the Big Data service offerings and capabilities for EMC Global Services Big Data Practice. As the CTO for the Big Data Practice, he is responsible for working with organizations to help them identify where and how to start their big data journeys. He's written several white papers, is an avid blogge...
    Bill Schmarzo, author of "Big Data: Understanding How Data Powers Big Business" and "Big Data MBA: Driving Business Strategies with Data Science," is responsible for setting the strategy and defining the Big Data service offerings and capabilities for EMC Global Services Big Data Practice. As the CTO for the Big Data Practice, he is responsible for working with organizations to help them identify where and how to start their big data journeys. He's written several white papers, is an avid blogge...
    Charles Araujo is an industry analyst, internationally recognized authority on the Digital Enterprise and author of The Quantum Age of IT: Why Everything You Know About IT is About to Change. As Principal Analyst with Intellyx, he writes, speaks and advises organizations on how to navigate through this time of disruption. He is also the founder of The Institute for Digital Transformation and a sought after keynote speaker. He has been a regular contributor to both InformationWeek and CIO Insight...
    "IBM is really all in on blockchain. We take a look at sort of the history of blockchain ledger technologies. It started out with bitcoin, Ethereum, and IBM evaluated these particular blockchain technologies and found they were anonymous and permissionless and that many companies were looking for permissioned blockchain," stated René Bostic, Technical VP of the IBM Cloud Unit in North America, in this SYS-CON.tv interview at 21st Cloud Expo, held Oct 31 – Nov 2, 2017, at the Santa Clara Conventi...