Welcome!

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

Related Topics: Weblogic

Weblogic: Article

Transactions: Are You in Control?

Rocket science pays off at the end

The launch of BEA's WebLogic Platform 8.1 was greeted with enthusiasm by industry analysts and IT practitioners alike, who recognized its potential to open up the power of the J2EE platform to a much broader spectrum of developers. This allowed J2EE architects to do what their skills are best suited for - architectural design and technical problem solving - while allowing the architectures designed by the experts to be used by the "ordinary" developers, who hitherto had been restricted to building departmental-scale applications because of the lack of an architecture for scalability underpinning the applications they produced with the "more accessible" tools they were accustomed to using.

Two key features of the WebLogic Platform enable this separation of duties between the high-level business developers and the highly technical J2EE architects - the BEA WebLogic Workshop runtime, which imposes some high-level architectural order on the high-level business developers; and the Workshop development environment, which allows the developers to interact with the environment via a consistent graphical abstraction, turning to lines of code only when they need to express some business rule, not when they try to assemble an application. The IDE also has a feature to help the architects - they can produce a skeletal application environment, populated with standard components, etc., and release that to the other developers as a template, getting the business programmers off to a flying start (and importantly, a flying start consistent with development standards and other development projects) in a pre packaged and automated way.

The key part of the runtime framework is the Controls architecture - controls provide a consistent way to encapsulate business logic. Business developers can code their business rules and provide them as components using controls, or to encapsulate complex logic and infrastructure needed to access some resource. J2EE architects can implement this "hard-core plumbing" and wrap it in a control that can then be used just as easily by the app developers as a piece of their own logic. This solves another problem that large development shops usually have - the J2EE coders produce lots of really excellent infrastructure, but it can only be consumed by other J2EE experts, because business developers don't understand how to use it.

Overall, from the J2EE developer perspective they get to avoid doing lots of dull, error-prone cut-and-pasting - let's face it, just another struts form front end, or just another code excerpt to look up a JMS queue in JNDI and send a message on it is nobody's favorite pastime. From the non-J2EE developer perspective, the assembly of a useful application from preexisting components (i.e., building another set of Web screens that combine existing subsystems in new ways) becomes possible without having to burn the midnight oil learning the J2EE incantations.

Transactions: Have You Lost the Plot?
So what on earth does that have to do with transactions? Well, nothing, it's just background. Without covering that, how can I write the article I wanted to? And what is that? Well...

Transactions, Workshop, and Controls
Controls are simply annotated Java objects - and it is these annotations that provide the magic that allows control users to work at a level of abstraction above the usual J2EE interface. When a control (which may actually be a composite of multiple controls) is deployed, the annotations drive the generation of the right runtime linkage (which is what is actually deployed). Like any other Java object, controls inherit their transactional context from the caller. Since controls have no concept of a remote interface (at least not in the current release), the caller is always a lightweight control container generated by WebLogic Workshop, which is itself contained by an EJB. If you look at the deployment descriptor associated with this (Workshop-managed) EJB, you will see that it has a transaction policy of "container" - so the transactional context of the controls will be provided by the EJB container, using JTA, just as if the control were a plain old Java object that you wrote and invoked from EJB code.

The nearest thing to a remote interface in Workshop is a Web service - it is very easy to take a control and expose it as a Web service (potentially, and a conversational Web service) with no more than a few mouse clicks, so the remaining question becomes...

What Is the Default Transactional Behavior of a Workshop Web Service?
Each time a call comes in to a Web service method, the linkage from message arrival to invocation has been done through a number of bits of J2EE machinery (depending on exactly what you have declared in the annotations), culminating in an EJB with conatiner-managed transactions. For the duration of the execution of the method, a JTA transaction will be in operation. If the method succeeds, the transaction commits. If the method fails (throws an Exception) the transaction will be rolled back. Easy so far.

Recall, though, that a WebLogic Workshop Web service can be conversational (again, if the annotations say it is). The conversation state is persisted in a database table. How does this persistent state relate to any application-managed persistent state? Well, it is included in the same transaction context. So if your method fails, it is as if that leg of the conversation never happened - the kind of nice, atomic behavior transactions are loved for. This has some implications on the deployment - by default, the conversation state is persisted via a data source called cgDataSource. If your application state is persisted elsewhere, you will get an error saying you can't infect your data source with the transaction because it already infects the cgPool underlying the cgDataSource. You can fix this in two ways: either change cgPool to use xa database access and get a two-phase commit, or have both the conversation state and your application state held in the same database instance via the same connection pool (Workshop's jws-config.properties file controls this from the Workshop perspective) and avoid the need for a two-phase commit.

If a Workshop Web service calls another Web service, the transaction context will not be propagated so the called service will run in its own new transaction according to the rules I just outlined. If you would like the failure of a service call to roll back the caller's transaction, rethrow the exception to the framework. If you want the caller's state (both application and conversational) to be persisted in spite of a Web service call failure, catch the exception and don't re-throw it.

Of course, the usual rules about transactions apply. If you want something (say an audit record) persisted irrespective of the transaction's eventual outcome, then you need to get the TransactionManager object and suspend the transaction before making the call and resume it afterwards. This is getting hairy for a non-J2EE guru type, which makes it exactly the kind of thing the J2EE architects should implement and provide to the application developers as a pre-built Control.

The Key Is, It Doesn't Matter!
So the last few hundred words were all a bit rocket-science like (or at least, a bit close to rocket-science like) for many application developers. Well, that's the point. If the J2EE architects understand this stuff, and bear it in mind when they put together templates and development guidelines for the app developers, then the app developers shouldn't need to worry about it - the framework will do the right thing on their behalf, and they will produce more applications more quickly whose behavior will be more consistent than they could have hoped for without the framework and the templates steering them in the right direction. All of which might even mean an IT department that can smile and say yes the next time the business changes the requirements again at the last minute, rather than muttering something about dilithium crystals and updating its résumé!

References

  • John Methot's white paper on BEA WebLogic Workshop internals: http://dev2dev.bea.com/products/wlworkshop81/articles/wlw_internals.jsp. This covers the runtime implementation of the Workshop framework, and how it can be configured to behave differently in more detail than there is space for here.
  • More Stories By Peter Holditch

    Peter Holditch is a senior presales engineer in the UK for Azul Systems. Prior to joining Azul he spent nine years at BEA systems, going from being one of their first Professional Services consultants in Europe and finishing up as a principal presales engineer. He has an R&D background (originally having worked on BEA's Tuxedo product) and his technical interests are in high-throughput transaction systems. "Of the pitch" Peter likes to brew beer, build furniture, and undertake other ludicrously ambitious projects - but (generally) not all at the same time!

    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.


    IoT & Smart Cities Stories
    Chris Matthieu is the President & CEO of Computes, inc. He brings 30 years of experience in development and launches of disruptive technologies to create new market opportunities as well as enhance enterprise product portfolios with emerging technologies. His most recent venture was Octoblu, a cross-protocol Internet of Things (IoT) mesh network platform, acquired by Citrix. Prior to co-founding Octoblu, Chris was founder of Nodester, an open-source Node.JS PaaS which was acquired by AppFog and ...
    In today's enterprise, digital transformation represents organizational change even more so than technology change, as customer preferences and behavior drive end-to-end transformation across lines of business as well as IT. To capitalize on the ubiquitous disruption driving this transformation, companies must be able to innovate at an increasingly rapid pace.
    Predicting the future has never been more challenging - not because of the lack of data but because of the flood of ungoverned and risk laden information. Microsoft states that 2.5 exabytes of data are created every day. Expectations and reliance on data are being pushed to the limits, as demands around hybrid options continue to grow.
    "MobiDev is a Ukraine-based software development company. We do mobile development, and we're specialists in that. But we do full stack software development for entrepreneurs, for emerging companies, and for enterprise ventures," explained Alan Winters, U.S. Head of Business Development at MobiDev, in this SYS-CON.tv interview at 20th Cloud Expo, held June 6-8, 2017, at the Javits Center in New York City, NY.
    The explosion of new web/cloud/IoT-based applications and the data they generate are transforming our world right before our eyes. In this rush to adopt these new technologies, organizations are often ignoring fundamental questions concerning who owns the data and failing to ask for permission to conduct invasive surveillance of their customers. Organizations that are not transparent about how their systems gather data telemetry without offering shared data ownership risk product rejection, regu...
    The best way to leverage your Cloud Expo presence as a sponsor and exhibitor is to plan your news announcements around our events. The press covering Cloud Expo and @ThingsExpo 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 Cloud Expo. Product announcements during our show provide your company with the most reach through our targeted audiences.
    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...
    When talking IoT we often focus on the devices, the sensors, the hardware itself. The new smart appliances, the new smart or self-driving cars (which are amalgamations of many ‘things'). When we are looking at the world of IoT, we should take a step back, look at the big picture. What value are these devices providing. IoT is not about the devices, its about the data consumed and generated. The devices are tools, mechanisms, conduits. This paper discusses the considerations when dealing with the...
    Machine learning has taken residence at our cities' cores and now we can finally have "smart cities." Cities are a collection of buildings made to provide the structure and safety necessary for people to function, create and survive. Buildings are a pool of ever-changing performance data from large automated systems such as heating and cooling to the people that live and work within them. Through machine learning, buildings can optimize performance, reduce costs, and improve occupant comfort by ...
    Business professionals no longer wonder if they'll migrate to the cloud; it's now a matter of when. The cloud environment has proved to be a major force in transitioning to an agile business model that enables quick decisions and fast implementation that solidify customer relationships. And when the cloud is combined with the power of cognitive computing, it drives innovation and transformation that achieves astounding competitive advantage.