Thursday, July 16, 2009

XForms hooked up to earlier prototype of (-)RX with XML Feature Pack

I talked about in my last post about getting the XML Feature Pack hooked to JAX-RS REST (Wink) and a back end XML data store (DB2 pureXML), but said I hadn't yet connected the REST endpoints to XForms.

Today I crossed that final gap. Didn't end up using Ubiquity XForms for this first try - just used the XForms plug-in for Firefox. What took the longest in this was ensuring that I set the appropriate @Provides in JAX-RS to ensure the APPLICATION_XHTML_XML headers were sent to the browser, so the XForms runtime knew to do its magic.

I had to write alot of system code around the XML Feature Pack to get this to work, but now that that system code is written the amount of configuration needed to get new interesting samples is very small (as compared to doing the same with a bunch of API layers and objects in J2EE and JavaScript). Quite excitingly small.

Time to make a more complicated example.

Thursday, July 9, 2009

Web communications enhancing interactions

One of the common questions as people are learning about our WebSphere Communications Enabled Applications (CEA) function is if we are trying to replace interactions with "real people" when they see features such as the cobrowsing. The real idea behind CEA is using an interactions via the web to enhance real time communications which could be phone calls or instant messaging. There are several scenarios that we try to show in the demo video below, but here are some of the common issues that a web based interaction could solve in a contact center:

- More -

Wednesday, July 8, 2009

The Perfect Storm of XRX - XForms, Rest, XQuery

Funny chain of events.

Almost every customer I have talked to on the XML Feature Pack Beta has also been talking to our DB2 pureXML team about their native XML storage.

I have also talked with the Lotus Forms folks working on Ubiquity XForms.

These were all day job things that I do in my role as a XML Strategist for WebSphere and somewhat related to my main job - architect for the Feature Pack for XML for WAS V7 (currently in beta).

Recently I got onto Twitter and noticed a few tweets related to pulling similar technologies together into something called XRX. I won't go into a deep explanation of XRX but there are great definitions of it on Wikipedia and Orielly and a great class on it from Dan McCreary. In short, it is a model for web programming that is declarative and XML native end to end using XForms on the client, Rest to communicate to the server, and XQuery to work with data.

I happened to have planned a few days of strategic thinking this week and decided to play with this in relation to the XML Feature Pack (which has XQuery 1.0 support).

We have been working on internal samples of how to cleanly leverage DB2 from the XML Feature Pack. Its actually not hard at all to have the XML Feature Pack do middleware processing of data that comes from DB2 pureXML as we provide
XSource/XCollection/XResult resolvers that allow you to do just about anything you want with input and output (like issue a JDBC request to DB2 that returns XML column data in its native XML form). Actually this approach is very advanced as a) DB2 can provide massive storage and indexing of XML data via XQuery itself while returning smaller subsets of data to WAS and b) the XML Feature Pack can join this data to non-database stored data (web services, files) and transform it in ways you wouldn't want to do in the database. So, based on this we have the XQuery part (actually X-* including XQuery and XSLT) of XRX.

Today I hooked the XML Feature Pack into a JAX-RS implementation (Apache Wink). Again this was rather easy as I could define Providers for XQuery objects (well not really objects - just a token to hold the combination of an XQuery expression and a XML input source). I could then issue GET requests against the WAS web container that included parameters that identify the data set to be worked with (think collection in XQuery terms) and the XQuery program (or XSLT if I choose) to work with the data set. So, based on this we have the R part of XRX.

Next I need to work with the Ubiquity code to get the first X of XRX, but given I'm already returning XML datasets, I believe this will be straight forward.

I think this combination of enterprise scalable application server and database along with standard XForms will be quite useful to many scenarios. Also, as a performance geek, I can't help but be excited that this whole chain is not only very capable (with regards to programming model) but declarative end to end. This means, in implementing the runtime, I can make optimizations that aren't possible when this similar thing is programmed in imperative languages like Java using Java API's. This has very interesting multi-core optimization possibilities and is very interesting when combined with cloud like deployment scenarios. Additional benefits are that no XML is harmed by OO (Object Oriented) conversions end to end (think losing data and performance in the mapping), this model should be something non-Java programmers (Business Folks) can work with, and these are all W3C standards.

I'd like to consider a sample of this to share at some point with code. Anyone interested?

Thursday, July 2, 2009

Presenting At Summer XML 2009 Conference - Raleigh, NC - July27/28th

As I'm finishing up my presentations for this conference, I wanted to let you know about it. Please consider attending to hear my session and the other excellent presentations planned. Let me know if you're coming into town and we can meet up at the event.

Link: http://www.aboveandbeyondlearning.com/xmlconference.html

Session 1: XPath 2.0, XSLT 2.0, and XQuery 1.0 - Basic Introduction with Focus on What's New

Introductory session covering changes to these technologies. Great for newbies and gurus alike.

Session 2: Using the new XML standards of XPath 2.0, XSLT 2.0, and XQuery 1.0 in Java based Middleware

This intermediate session will document some common usage scenarios of the W3C XPath 2.0, XSLT 2.0, and XQuery 1.0 in Java middleware environments. Through the use of scenarios, the session will explain why to use each standard, what common issues are and how to best avoid them. Comparisons will be drawn between using these XML programming models and their object oriented counterparts – Document Object Model (DOM) and Java API for XML Binding (JAXB). The session will then focus on API’s for invoking XML programming models from Java. An analysis of the Java API for XML Processing (JAXP) will show how this API is lacking when providing for XPath 2.0, XSLT 2.0, and XQuery 1.0. Alternative Java API’s beyond JAXP will be discussed and advantages of each will be discussed. Finally, enterprise usage in Java based middleware will be considered focusing on performance, reliability, and full standards compliance.

XML Feature Pack (XPath 2.0/XSLT 2.0/XQuery 1.0) Beta Links

I have been discussing the WAS V7 Feature Pack for XML Beta (XML Feature Pack for short) with enough folks lately to realize that a single link that listed all the links that can help you start would be useful. So here goes. Go ahead and bookmark this link as I'll be updating it as the Beta moves along.

- Open Beta Website
-- Download code
-- Download documentation
-- Forum for discussion

- The WebSphere Community Blog (where I frequently post updates)
-- Beta 1 Blog Announcement
-- Beta 2 Blog Announcement

- Demo #1 (Introduction to the XML Feature Pack)
-- Part 1 (Standard/HD)
-- Part 2 (Standard/HD)

- Demo #2 (An end to end XPath 2.0 Application)
-- Part 1 (Standard/HD)
-- Part 2 (Standard/HD)

-Demo #3 (An end to end XSLT 2.0 Application)
-- Part 1 (Standard/HD)
-- Part 2 (Standard/HD)

- Demo #4 (Beta 2 Refresh valuable features)
-- Part 1 (Standard/HD)
-- Part 2 (Standard/HD)

- W3C Specifications
-- XPath 2.0
-- XSLT 2.0
-- XQuery 1.0

- Great books on the standards
-- XSLT 2.0 and XPath 2.0 Programmer's Reference (Programmer to Programmer)
-- XQuery

Last updated: 2009-07-02

Wednesday, July 1, 2009

SCA 1.0.1 Beta Refresh Available

Service Component Architecture has 2 primary mechanisms for vendors to extend the basic assembly model: access ways to and from services (bindings) and adding new implementation kinds that can be assembled and composed using SCDL (implementations).

For this update of the beta code, available here, we've been able to augment our original beta drop with additional support in both directions:

Bindings:
  • Web 2.0 bindings for JSON-RPC and ATOM services.
  • Additional support for JMS over WebSphere MQ.
Implementations:
  • OSOA support for implementation.jee.
  • UI components which support html/javascript implementations where SCA is used to wire together browser interactions with services available over JSON-RPC and ATOM. This support uses DOJO subroutines to accomplish the JavaScript wiring.
  • We have begun our work on implementation.spring to encapsulate, expose and compose your Spring applications as services in your enterprise's SOA. I'll note for the record we are not shipping the Spring framework with WebSphere and you'll have to get the Spring Framework (2.5.5) from SpringSource.
But Wait! There's more... Thrown into the mix of new capabilities we've added support for:
  • using SCA annotations in JEE components so you can leverage SCA directly in your JEE applications.
  • using SDO 2.1.1 which derives its implementation from our new XML core provided by the XML Feature Pack for WAS V7.
That's quite a lot of new support to chew on, and the team worked hard to remove many of the restrictions that were part of the first beta of 1.0.1 and even delivered a virtual machine image of the beta if installing software isn't your bag.

Finally, the early programs site which supports our beta has a lot of collateral like white papers and demos as well as a forum to answer your questions.

I can't think of how to make a beta much easier to get feedback than we've tried to make this delivery -- if there's still an inhibitor that you're experiencing that we could do different and make your life easier, my team is all ears.

We look forward to your feedback and your participation.

Friday, June 19, 2009

WebSphere Application Server for Developers - Now downloadable, No charge

Want to try out WebSphere Application Server V7.0 for development? Check!
Want to do it without having to order a CD? Check!
Want to do it without having to work with purchasing? Check!
Want to do it by yourself as a developer? Double Check!

I talk to many developers who want to install WebSphere Application Server for development, but every license is tracked and installed by their operations team on some remote server. Working with the operations team and (gasp) purchasing would take more time than the time to write the application they wanted to write. So they go off and download some other runtime and later port the application back to WebSphere Application Server or abandon the project altogether.

This won't be the story after today. Go here to download a no-charge copy of WebSphere Application Server for your development needs.

From the download page:

Download WebSphere Application Server for Developers, a no-charge offering that satisfies the need for a no-cost WebSphere Application Server development runtime for projects that don't warrant the expense of a priced and supported runtime on the developer desktop. Reduce testing effort and develop with confidence using a runtime environment that is identical to the production runtime environment your applications will eventually run on.


Enjoy!

Tuesday, June 16, 2009

WAS XML Feature Pack Demo #4 - More XSLT 2.0 Features and Compilation

I released the first demo two months ago introducing the XML Feature Pack:

Demo 1 (Part 1, Part 2).

Two days ago I released the second demo showing how to use XPath 2.0 in an end to end J2EE application:

Demo 2 (Part 1, Part 2).

Yesterday I released the third demo showing how to use XSLT 2.0 in an end to end J2EE application:

Demo 3 (Part 1, Part 2).

Today, I'll wrap up the demos with demo 4 which talks to about XSLT 2.0 schema awareness, validation and various other XSLT 2.0 features we've added to round out the XSLT 2.0 standard support. Finally, I show a demonstration of how to use the pre-compilation support added in the Beta refresh.

Demo 4 - XSLT 2.0 Features (Part 1)


Direct Link (HD Version)


Demo 4 - XSLT 2.0 Features (Part 2)


Direct Link (HD Version)

WAS XML Feature Pack Demo #3 - End to End XSLT

I released the first demo two months ago introducing the XML Feature Pack:

Demo 1 (Part 1, Part 2).

Yesterday I released the second demo showing how to use XPath 2.0 in an end to end J2EE application:

Demo 2 (Part 1, Part 2).

In this third demo, I expand upon this same basic application to show how to use XSLT 2.0 in an end-to-end J2EE application. In the demo, I show some of the new valuable features of XSLT 2.0. I show how to bridge the gap between Java and XML processing by showing binding of Java data to the XSLT stylesheets and calling user defined Java extension functions as part of the XSLT processing. As compared to the XPath 2.0 example where data was stored in JavaBeans then JSP formatted to the user, this sample directly transforms data from XML to XHTML user presentation. Also, I show how some of the Java logic used in the XPath 2.0 example can be recoded in simpler XSLT 2.0 temporary trees and stylesheet functions.

Demo 3 - End to End XSLT 2.0 (Part 1)


Direct Link (HD Version)


Demo 3 - End to End XSLT 2.0 (Part 2)


Direct Link (HD Version)

Monday, June 15, 2009

WAS XML Feature Pack Demo #2

As announced last week, I have created three new demos for the WAS XML Feature Pack.

I released the first demo two months ago introducing the XML Feature Pack:

Demo 1(Part 1, Part 2). Remember to click, view in HD.

In the second demo, I expand upon this same basic application to show how to use XPath 2.0 in and end-to-end J2EE application. In the demo, I show some of the new valuable features of XPath 2.0. Also, I show how to bridge the gap between Java and XML processing by showing binding of Java data to the XPath queries and calling user defined Java extension functions as part of the XPath processing. Finally, I show how to gather data from the returned XPath sequence cursors and how to integrate that data with Java beans.

Demo 2 - End to End XPath 2.0 (Part 1)


Direct Link (HD Version)


Demo 2 - End to End XPath 2.0 (Part 2)


Direct Link (HD Version)

Wednesday, June 10, 2009

WAS V7 XML Feature Pack Beta Refreshed (With focus on XSLT 2.0)

Today we have released an updated XML Feature Pack Beta. The beta is available here.

Since the first release two months ago (which had full XPath 2.0 and partial XSLT 2.0/XQuery 1.0), we have added quite a bit to XSLT 2.0 (making us nearly spec complete) and more to XQuery 1.0.

Among the biggest features added in the XSLT 2.0 area is XML Schema awareness. This includes validation which allows you to validate (make sure it contains data that is allowed per the schema) the incoming data to transformations, temporary trees of data, and output data from transformations. Also, as is important when working with vertical industry standard schemas, our schema awareness support includes schema assessment. This means that your XSLT stylesheets know when an attribute or element content is an integer or date and you can treat it as such. Taking this to the next level, if you extend your industry standard schema type of a bill of materials, you can write templates that match that type (schema-element(*, tns:BillOfMaterialsType)). In the past you would have had to made templates that were of the industry standard element names as well as all extending element names (tns:BillOfMaterialsName, mycompany:FullfillmentBillOfMaterialsName, mycompany:PurchasingBillOfMaterialsName, etc.).

Other new XSLT 2.0 features in this refresh are collections support (allows multiple input data sources in a well defined way), "undeclare-prefixes" serialization parameter(simplifies namespace in XML 1.1), next-match (allows you to call overridden templates) element, required parameters and "as" attributes (helps guarantee stylesheet elements are called correctly) and full support of XSLT keys.

Another major feature of this refresh is ability to pre-compile XML artifacts. This refresh contains tools that compile XPath, XSLT, and XQuery to java classes. These classes are basically the same logic that previously was interpreted by the XML runtime. However, with them now being compiled, they run much faster than interpreted. The refresh offers three modes:


  • interpreted - best when the XML artifacts are created ad hoc at runtime and not reused

  • compiled - best when the XML artifacts are created ad hoc at runtime but reused

  • pre-compiled - best when the XML artifacts are known at compile time of your application



We have also expanded our XQuery 1.0 support in this refresh.

Please let me know if any of these new features help you in your applications. I'm excited to hear of all the applications that are being tested against this functionality.

Finally, I have created another three demos to be posted on YouTube. Over the couple of days, I'll post them with links here. Hopefully they will help you understand how to use this functionality in your own applications.

Friday, May 1, 2009

Communications Enabled Applications

The IBM WebSphere Application Server V7.0 Feature Pack for Communications Enabled Applications Open Beta has begun. That means we can finally start talking about the many exciting features in the beta.

We have a blog which will help define what these Communications Enabled Applications are, talk more about those features, and show some cool homemade videos showing the use of some of the Web 2.0 widgets and capabilities included here. Click to check out that blog and learn more.

Thursday, April 30, 2009

Come talk to me at Impact 2009 next week

I'll be presenting three topics at Impact 2009 next week. For those that don't know, Impact is the premier WebSphere conference - focusing this year on our Smart SOA approach.

I'll be continuing to contribute to a session we've been doing for two years now on SOA performance that includes leads across the WebSphere portfolio in SOA performance. I'll be co-presenting a session with Information Management XML expert Susan Malaika, looking at end to end strategies around XML in the enterprise (including both database and middleware focus). Finally, I'll be covering the XML Feature Pack Beta talking about the value of XPath 2.0, XSLT 2.0, and XQuery 1.0 and how the Beta provides these functions to WebSphere Application Server environments focusing on the new runtime and new API.

Here are the abstracts. If you plan on being at Impact, please sign up for the following sessions and feel free to stop by after a session to talk about performance, SOA or XML. If you aren't going to be at Impact, I'll see what I can do to post the charts/audio recordings (if possible).

1825 - SOA and BPM Performance Update


One of the cornerstones of obtaining good solution performance in an SOA environment is to use technology which is robust, efficient and scalable. The IBM WebSphere® portfolio provides this through its key SOA offerings - IBM WebSphere Application Server, IBM WebSphere Business Monitor, IBM WebSphere Business Service Fabric, IBM WebSphere IBM DataPower® Appliances, IBM WebSphere Enterprise Service Bus, IBM WebSphere Integration Developer, IBM WebSphere MQ, IBM WebSphere Message Broker, IBM WebSphere Process Server and IBM WebSphere Services Registry and Repository. Collectively these offerings provide a very rich set of functions covering basic Web services, integration, messaging, choreography, business activity monitoring and situation detection, dynamic endpoint selection and governance. Come and join the performance architects of these products as they describe both historical and recent product performance improvements.

1668 - XML in the Enterprise : Defining an XML Strategy


Increasingly, XML plays a critical part in SOA, Web-oriented architecture, mashups and cloud computing. Systems and application architects and designers need a clear vision of the role that XML plays in their system, in order to define an XML strategy for their institution or organization. This session provides an overview of some IBM products and technologies in various IBM portfolios, including WebSphere®, Information Management® and Lotus®, with an XML focus. It goes over frequently asked questions about XML in various areas, including namespaces, versioning, storing, validating, transforming, updating and usage patterns, in order to provide guidance for creating an enterprise-wide XML strategy and to help with managing XML across organizations. The role of industry consortia-defined XML messages will also be covered.

1784 - Building XML Oriented Applications with IBM WebSphere® Application Server V7


XML structured data has become the predominant data format for data interchange. XML data is navigated, queried or transformed in almost every existing the IBM WebSphere® application. Learn how to improve these applications with the IBM WebSphere Application Server Feature Pack for XML Beta. Learn specific ease of use, reliability, and performance benefits obtained by using the new XPath 2.0 and XSLT 2.0 Worldwide Web Consortium standards. You will also learn new scenarios only possible with functional enhancements in XPath 2.0 and XSLT 2.0 standards, as well as the new XQuery 1.0 standard. You will learn how to incorporate these capabilities into your new and existing applications along with how to avoid common pitfalls. The session concludes with an overview of how this feature pack is enabled within existing IBM WebSphere Application Server environments.

Cya in Sin City.

Friday, April 17, 2009

WAS XML Feature Pack Open Beta Available (XPath 2.0, XSLT 2.0, XQuery 1.0)

I've been relatively quiet on the blog as of late. That tends to happen when you spend a lot of time working on something big.

My team and I have been working very hard to bring the W3C standards of XPath 2.0, XSLT 2.0, and XQuery 1.0 to life. I'm proud to announce, that today, you can download, install, and work with the WebSphere Application Server V7.0 Feature Pack for XML Beta containing these critically important standards.

We have delivered a beta XML runtime that supports these standards as well as offers a new API to interact with these standards. We believe these standards will simplify and increase the reliability of XML oriented WAS applications. The standards will also enable new scenarios never possible before in WAS - like querying large amounts of XML data located outside of databases in parallel with databases with XML support, or making navigation/transformations decisions based upon industry standard XML schema support.

You can download the beta from our open beta website.

You can discuss the beta on our forum.

In order to help you understand the feature pack, I put together a quick demo (in two parts). I hope to put more demos together soon, but let me know what you think of these first.

Demo 1 (Part 1)


Direct Link (ensure you click on watch in HD)


Demo 1 (Part 2)


Direct Link (ensure you click on watch in HD)

Tuesday, March 24, 2009

Open SCA 1.0.1 Beta Available!

The Open SCA Feature Team has just released a beta milestone for a refresh of Open SCA support for WebSphere Application Server V7. The new level of code adds an implementation for JMS bindings for the default messaging provider as well as JEE integration scenarios where JEE applications can be enriched with SCA annotations and leverage the SCA SOA programming model benefits from within your JEE applications. Similar to the SCA 1.0.0 Feature Pack available since Dec 2008, the implementation derives its architectural direction from specifications at OSOA and source origins are derived from the open source project Apache Tuscany.

The beta milestone is available externally here and as usual with WebSphere Beta programs comes with a support forum for Q&A. Happy SOA Programming!

Steve Kinder

Friday, February 27, 2009

SCA Whitepapers

I just wanted to give this community a pointer to some interesting new content that my team has produced and published at IBM developerWorks regarding the first delivery of Open SCA technology in a WebSphere Application Server form factor.

Part 1: Overview of Service Component Architecture
Part 2: Policy Sets for Service Component Architecture
Part 3: Policy and Intents for Service Component Architecture
Part 4: Java Annotations and Component Implementations

We are looking at other topics at extending this Open SCA dialogue at developerWorks and I'm happy to get your feedback, hate mail or other comments back either via this forum, developerWorks or you can even send your flames directly to my email address: kinder@us.ibm.com

Our team is also looking at compelling user stories as follow on work and while I could not commit to our delivery of any code or beta's in the future, if you're interested in giving us stakeholder feedback, I would love to talk to you. We have had some interesting feedback on what we've delivered already and look forward to help making this technology a compelling SOA tool for our customers.

Friday, January 23, 2009

REST and WebSphere in 2009 Trends and Directions

Jerry Cuomo recently mentioned in an InfoQ article the WebSphere trends and directions for 2009

One of those topics was a comment on the support the WebSphere was doing in the area of REST (and the need for a common REST API), and how we are working to allow our own products as well as customer applications to be developed quicker and easier (promoting an ability to react faster and be more Agile).

Anne Manes made a comment about why we need a REST API - isn't HTTP GET,PUT,POST, DELETE enough?

I've provided an update with respect to where I think Jerry was headed via his comments (and what we are doing in WebSphere to provide value to customers)..

However - I find it interesting that folks think that REST is so much easier that you don't need any more information that 4 interfaces. You still need to know what the resources identifiers are and what is the resource state actually represents in order to use them (irrespective of the actual encoding/formatting of that data). That need isn't any different than any other distributed communication mechanisms that I've worked on in the past. I've worked w/SNA, TCP/IP, DSOM (Distributed System Object Model), CORBA/IIOP, Web Services, and now REST - as I'm focusing on REST within WebSphere. Irrespective of the technologies around (and I've seen all the comments about problems w/the technologies, tight coupling between technologies, lack of interoperability, etc...) - at the end-of-the day - you have a "client" making a request for information to some "service/resource" and it needs to understand the format of that data to accurately process the data. If you change the format, you potentially break the client. In a web-presentation world and HTML, the data can change the data, but our human minds can easily understood if the data format changes. For example, ESPN.com recently changed their web site around - however, I can still manage to deal w/it - since human minds can easily comprehend it. However - I know that if I wrote a script looking for the scores of yesterday's games (thereby automating it)- that it would fail since the location/context of that information is now in a different spot and presented differently.

In the end - I think we need to take our focus off the technologies themselves, and place the focus more on the value obtained in using the technologies to achieve a business goal. Defining patterns and best practices to use technologies are as critical to making our customers succeed as the technology itself. Anti-patterns are also valuable as the prevent customers from following practices known to be error prone. WebSphere focuses on producing middleware so that it can provide to customers an ability to expose data, services, whatever is needed for customers so that they can more easily provide value to their customers. I think all Jerry was alluding to is that by trying to be consistent with how we expose data/interfaces amongst our products, we can use those as best practices and patterns for others to do the same. That is what we are doing in WebSphere. As we can, we will publish best practices and use cases for using our technologies. In addition, in cases that we know we can do better - we are learning from those efforts and will be listing those as anti-patterns. Every time I have a discussion w/our services organization that use our technologies - that's the first question they ask - please give me reference patterns and anti-patterns.

Those who cannot remember the past are condemned to repeat it.

IBM again leads Oracle (and everyone else) on SPECjAppServer2004 performance and cost

I recently had someone email me on a performance topic and they referenced WebSphere Application Server's SPECjAppServer leadership. They actually didn't know that IBM regained total leadership in this benchmark late last year. Maybe the fun of the holidays didn't allow folks to notice? I wanted to post this update, so if other folks missed it they would notice.

In these times of tough economic conditions, it's really important to focus on total cost of ownership and ways to improve efficiency. IBM's continuous leadership in performance proves we care about performance as it relates to end to end J2EE enterprise computing scenarios. This increased performance means you can host more workload and applications on the same resources that you used before. Our performance engineers are continuously improving performance of your applications and we use SPECjAppServer to demonstrate those improvements.

Sometimes people ask me how SPECjAppServer matters to them. It's this continuously increasing performance that matters to them. Originally SPECjAppServer helped the J2EE programming model transition from a programming model to a capable enterprise ready programming model (stressing basic performance and scalability). Now, SPECjAppServer leadership helps customers know the middleware they are buying from IBM is helping them improve their efficiency.

This view is a technology view (leadership at 22634.13 JOPS), however it has business impacts as well. That result was achieved at roughly one half of the cost of our closest competitor. That just acquisition cost. If you consider the power savings on top of that you're not only being more green, but saving green.

Again, great work by the WebSphere Application Server performance team!

Disclaimer: SPEC is a non-profit organization that establishes, maintains and endorses standardized benchmarks to measure the performance of the newest generation of high-performance computers. Its membership comprises leading computer hardware and software vendors, universities, and research organizations worldwide. For complete details on benchmark results and the Standard Performance Evaluation Corporation, please see www.spec.org. Competitive claims reflect results published on www.spec.org as of January 23, 2009 when comparing SPECjAppServer2004 Total JOPS on all published results.

Friday, December 12, 2008

Service Component Architecture GA

Just a quick note that the Service Component Architecture Feature Pack for WebSphere V7.0 is now generally available for download here.

In addition to the code download, here are some other useful links:
SCA Feature Pack InfoCenter
SCA Feature Pack Release Notes
SCA Feature Pack developerWorks Roadmap (available here soon)

As an early Holiday Present for developers, Rational has announced an open beta program which demonstrates among other things, a new visual composite editor for Open SCA. Details about the program can be found here.

Happy coding!

Wednesday, November 19, 2008

Properties File Based Configuration for WebSphere

WebSphere configuration is composed of many configuration files mainly in XML format and some in other formats. These configuration files are spread across many directories in WebSphere configuration tree. Contents of these configuration files is mostly complex configuration objects. And there are different tools (wsadmin, console and java APIs ) available to query and modify these configuration objects. Each of these tools contains different tasks to modify different parts of configuration. For example, wsadmin contains AdminConfig, AdminTask, AdminApp and AdminControl tasks to query and modify different configuration objects within WebSphere configuration. In WebSphere version 7.0, a simple properties file based configuration is introduced. Simple properties file based confguration tool is a single generic tool to query and modify all configuration objects within WebSphere configuration. Thus end user needs to know just one set of commands to configure WebSphere application server. This utility allows examination of the configuration by extracting the configuration into a human readable properties file. This utility also allows user to modify the extracted properties file and apply the changes to the configuration.

The following commands are provided to perform properties file based configuration:

1. extractConfigProperties : To extract configuration of entire cell or a specified configuration object's properties to a file.
2. applyConfigProperties : To apply properties specified in the properties file to the system.
3. validateConfigProperties : To validate a properties file before applying the properties file to the System.
4. deleteConfigProperties : To delete properties specified in the properties file from the system.
5. createPropertiesFileTemplates: To create template properties files to use to create or delete specific object types.

For more information can be found here:
http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.websphere.base.doc/info/aes/ae/rxml_7propbasedconfig.html

Tuesday, November 18, 2008

Customer feedback in Barcelona

Last week, the 2008 European WebSphere Technical Conference and the 2008 European Transaction & Messaging Conference were held in Barcelona.

From 2008-November-Barcelona


Yes, there are worse things than spending a week in Barcelona. I've never been there before, and I definitely needed at least another week to see everything I wanted to see.

From 2008-November-Barcelona


I was there to run our Customer Feedback Program, which is a new track that debuted last spring at Impact 2008. The idea is that at most IBM conferences, the attendees naturally spend most of the week listening to IBMers speak. Where are we headed? What's new in the products? What's our newest three letter acronym? We wanted to turn this around and have sessions where the customers do the talking and the IBMers do the listening.

From 2008-November-Barcelona


These are small roundtable sessions with a couple of IBMers (usually a technical architect, designer, and/or product manager) and around four customers. After the sessions, we consistently hear from customers that they are the most valuable sessions of the week from their perspective, and the IBMers always walk away with great feedback about our products.

From 2008-November-Barcelona


We're trying to make these customer feedbacks sessions a staple for all of our conferences - so the next time you attend a conference (like Impact 2009 at the Venetion in Las Vegas) look for the feedback sessions. It's time well spent.

And if you ever get an opportunity to go to Barcelona, take it!

But watch out for the pigeons...
From 2008-November-Barcelona

Speaking tomorrow at the Charlotte WUG

Ying Ding has invited me to talk tomorrow at the Charlotte, NC WebSphere User's Group about our WebSphere Application Server version 7 release. If you happen to be in the Charlotte area, check out this link to the User's group for more information on the details for tomorrow's event. Look forward to seeing you there!

Friday, November 14, 2008

Centralized Installation Manager (CIM)

Performing a WebSphere installation and configuration and/or applying maintenance is relatively easy (OK, don't shoot me, I said "relatively"). But having to repeat that over and over again on many different remote machines throughout an organization is both time-consuming and error-prone. To address this problem WebSphere Virtual Enterprise (previously eXtended Deployment XD) v6.1 created and shipped a "Centralized Installation Manager" (CIM), and it worked so well that it is now even included in WebSphere v7 Network Deployment (ND).

The CIM program can be installed into a v7 ND Deployment Manager, and then can easily install and maintain the workstations in a WebSphere cell. An administrator can remotely install or uninstall product packages and maintenance to specific nodes directly from the administrative console without having to repetitively log in and perform these tasks on each individual remote machine. CIM operations can be done through its Graphical User Interface or can be scripted for full automation. Since CIM only previously shipped with XD-6.1, almost no "ND" WebSphere customers currently know about it. For details about CIM and how you can leverage to simplify and automate your enterprise servers please see the WebSphere v7 InfoCenter CIM information. If you are an ND cell administrator then CIM is something you need to seriously consider, it is certainly a way to significantly simply your day-to-day operations.

Thursday, November 13, 2008

Videos available that quickly walk you through WAS V7 functionality

If a picture is worth a thousand words, what is a video with pictures worth?

I just found out that there is a series of about 50 videos available in the WAS V7 InfoCenter that cover many of the new features of WAS V7. I have watched a few of them and find them very clear and short enough to consume on breaks between other work.

Go here to find the IBM Education Assistant videos for WAS V7.

Saturday, November 8, 2008

More information on the TPC SOA benchmark

As I mentioned previously, the TPC (Transaction Processing Performance Council) is looking at SOA benchmarking. SearchDataCenter.com has an article that summarizes alot of the new and upcoming TPC work. You will see the TPC chairman, Mike Molloy, talk about the popular existing TPC benchmarks (TPC-C, TPC-E, TPC-H, and TPC-App) as well as new benchmarking efforts around energy (consumption with focus on greening of the data center), virtualization (across all new workloads), ETL (Database Extract, Transform, Load), and SOA.

On SOA, Mike explains, "TPC's SOA benchmark is only in the proposal stage, but the tentative plan is to focus on common industry-accepted portions of SOA infrastructure, mainly Web services, the enterprise service bus, and business process choreography. As advanced SOA practices become more standard in the industry, TPC will expand the benchmark to incorporate additional SOA infrastructural services".

I'm excited to work within the TPC to continue driving this SOA performance benchmark to reality. There are no other standard benchmarks that tackle these common SOA infrastructural components. If you have interest in seeing such a benchmark or comments on how it would help you, please post a comment. I'll relay them back to the TPC.

Wednesday, November 5, 2008

WebSphere Application Server V7.0 What new for Security

WebSphere Application Server V7.0 shipped some exciding new features for Security. WebSphere delivered a rich set of feature in providing greater granularity management of security controls, offering new Audit and Complicate features, and enhanced secure Proxy to meet your business.

Our new WebSphere Security Domains provide greater granularity management of security controls by offers more flexibility in configuring security under centralized management. WebSphere Security Domains is designed to allow for a separation of WebSphere administrative security and your business application security. For example, Business applications can be configured to use your external LDAP registry while the WebSphere administration can use your Federated Repository’s file base registry containing internal user. Further granularity can be further expanded between business applications by allowing separate security configuration between business applications using new security configuration scoping to a cell, a cluster, or application server level. This new level of security granularity provides significant new flexibility in the security mechanism implemented across various application portfolios.

Our new WebSphere Security Auditing feature offer enhanced complicacy and auditing capabilities. The auditing capabilities allow tracks a number of security related events. For Example of administrative actions that can be logged include: security configuration changes, key and certificate management, and access control policy changes. Business applications can be audited to record a number of security events such as authentication or authorization attempts. This new security logging and auditing capability ensures accountability for administrative actions. In addition, we offer a temper proof audit file to prevent any tempering of recorded audit data. For z/OS customers, the generated Auditing data optionally intergrades with the z/OS System Management Facility leveraging by recording the WebSphere Auditing data as part of the Auditing Type 83 records.

Our WebSphere Secure Proxy has been become a lot easier and more. The WebSphere Secure proxy offers a new DMZ Hardened Proxy profile option. The DMZ Hardened Proxy improves security by minimizing the number of external ports opened, loading only signed JARs, and running as an unprivileged user when binding to well known ports. Both static and dynamic routes are supported by the DMZ Hardened Proxy.

We encourage you to visit our WebSphere Application Server’s Infocenter under What New for more information on these features as well as the many other exciding features we are offering for WebSphere Application Server V7. http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.websphere.nd.multiplatform.doc/info/ae/ae/welc_newsecurity.html

Monday, November 3, 2008

EJB 3.0 and Web Services in WebSphere App Server v7.0

One of the questions I get most frequently on the EJB 3.0 feature pack for WebSphere App Server 6.1, is where a customer has installed both the EJB 3.0 feature pack and the Web Services feature pack, and wants to expose their EJB 3.0 bean as a JAX-WS web service endpoint, like so:

@WebService

@Stateless

public class MyEJB3WebServiceBean implements MyCoolService {

...

}


Unfortunately, we weren't able to directly support this scenario via the v6.1 feature packs, since doing so would have required that each feature pack depend on function in the other feature pack -- something that wasn't allowed in the overall definition for the v6.1 feature packs. We published a workaround for this, where you use a "helper class" as the JAX-WS implementation and have that class just forward the incoming requests to the target EJB 3.0 bean. It works just fine, but is nowhere near as nice as just having a single class that's both the endpoint definition and implementation.

The good news is that with WebSphere App Server v7.0, you can directly annotate your EJB 3.0 beans with the @WebService or @WebMethod annotation (just like the code above) and have them directly accessible via a JAX-WS endpoint; no "helper" class required. The Rational Application Developer (RAD) 7.5 tooling also makes it easy to code up your EJB 3.0 beans this way.

The ease-of-use combination of EJB 3.0 and JAX-WS is really, really nice. WebSphere App Server v7.0 makes it easy to implement this powerful combination of function.

Monday, October 27, 2008

New SIP RFCs Supported by WebSphere 7 (Join, Replace and Update)

Support was added in WAS 7.0 for the following three RFCs: 3911 (Join Header) and 3891 (Replaces Header). These are very similar RFCs but are used for different purposes. Join is used to join an existing dialog and replaces is used to replace an old dialog with a new dialog.

From abstract of RFC 3911:
This document defines a new header for use with SIP multi-party applications and call control. The Join header is used to logically join an existing SIP dialog with a new SIP dialog. This primitive can be used to enable a variety of features, for example: "Barge-In", answering-machine-style "Message Screening" and "Call Center Monitoring".


From abstract of RFC 3891:
The Replaces header is used to logically replace an existing SIP dialog with a new SIP dialog. This primitive can be used to enable a variety of features, for example: Attended Transfer and Call Pickup.


In terms of RFC 3911, the Join header contains information used to match an existing SIP dialog (call-id, to-tag, and from-tag) to the new dialog being created. From the JSR 116 perspective, the join header can be used to add a new dialog/SIP session to an existing SIP Application session in much the same way that an encoded URI is used. This is achieved by setting the call-id, to-tag and from-tag in the join header of the INVITE to match that of an existing dialog.

In terms of RFC 3991, the Replaces header contains information used to match and replace an existing SIP dialog (call-id, to-tag, and from-tag) to the new dialog being created. From the JSR 116 perspective, the join header can be used to replace an existing SIP session associated with a SIP Application Session with a new dialog/session. This is achieved by setting the call-id, to-tag and from-tag in the replaces header of the INVITE to match that of an existing dialog. Note that it is up to the application to send a BYE on the original dialog, the container will not take care of this for you so that from the JSR perspective there really is not much difference between Join and Replaces.

RFC 3311 support was also added to WAS 7. This RFC defines the use of the Update method. From abstract of RFC 3311:

UPDATE allows a client to update parameters of a session (such as the set of media streams and their codecs) but has no impact on the state of a dialog. In that sense, it is like a re-INVITE, but unlike re-INVITE, it can be sent before the initial INVITE has been completed. This makes it very useful for updating session parameters within early dialogs.

Wednesday, October 22, 2008

Asynchronous Request Dispaching, Part 2

This is part two of my previous blog where I said I would discuss the differences between WebSphere’s Asynchronous Request Dispatcher and the Asynchronous Servlet Proposal from the Java Community Process.

The initial Servlet EG proposal introduced a different model of asynchronous servlet processing through suspend, resume, and complete methods. The basic idea is to allow a servlet to initiate asynchronous operations and re-dispatch to the same servlet once these operations are complete. A suspend tells the container to disable the response so that additional logic in the initial dispatch doesn’t affect the response. Meanwhile, the application programmer uses another thread to do some asynchronous work required by the request. Once that is complete, resume is called which tells the container to schedule a dispatch of the request back through the filters and servlets. Alternatively, complete can be called to simply close the output without a re-dispatch. This has been debated thoroughly, and there are still competing proposals which are arguably less powerful. However, since this is the only publicly discussed proposal, I will use that for comparison.

I will present a few scenarios and show the way they can be solved in ARD and the Servlet EG proposal. This should help you understand the pluses and minuses of using one paradigm over the other.

Example 1: A request needs to print out a table that will be filled in with the results of two slow queries to external resources.

EG Proposal:

1. Original servlet prints out the table up to the point query 1 results are required

2. Suspend the request

3. Kick off query 1

4. Resume/re-dispatch the request after query 1 completion

5. Write results of query 1

6. Write next portion of the table

7. Suspend the request

8. Kick off query 2

9. Resume/re-dispatch the request after query 2 completion

10. Write results of query 2

11. Finish writing the table from the original servlet

ARD:

  1. Original servlet prints out the table up to the point the query results are required on thread 0
  2. Do async include on thread 1 to the servlet that does query 1
    1. Concurrently, thread 0 continues writing the table
  3. Do async include on thread 2 to the servlet that does query 2
    1. Concurrently, thread 0 continues writing the table
  4. Thread 1 returns and flushes content to the client up to query 2
  5. Thread 2 returns and finishes the response

ARD Advantages:

  1. ARD can finish sooner because query 1 and 2 are running simultaneously. The EG Proposal kicks them off 1 at a time.
  2. With the EG Proposal, the application programmer could emulate query 1 and 2 running simultaneously, but they would have to do their own threading.
  3. With ARD, the original thread can write out the full outline of the page because the container has the smarts to go back in and find the correct position for the response content. The EG Proposal does not.
  4. The EG Proposal would have more issues with tracking state because the resume goes back through the filter and servlet request handling methods. The filters and servlets would have to make sure they are not duplicating output that was written before the initial or subsequent suspend.
  5. Order of completion is not important when using ARD.

ARD Disadvantages

  1. ARD only allows asynchronous operations inside of includes.
  2. More threads are used.

Example 2: A request requires the results of two slow queries to external resources where state from query 1 is required for query 2 to work.

EG Proposal:

  1. Enter the original servlet
  2. Suspend the request and kick off query 1
  3. Resume the request after query 1 completion
  4. Re-enter the original servlet
  5. Suspend the request and kick off query 2 with state from query 1
  6. Resume the request after query 2 completion
  7. Re-enter the original servlet and finish

ARD:

  1. Enter the original servlet using thread pool A.
  2. Do async include using thread pool B to the servlet that does query 1
    1. Concurrently, the original servlet processing continues
  1. Thread from thread pool A waits for results from query 1.
  2. Do async include using thread pool B to the servlet that does query 2
  3. Query 2 returns and finishes the response

ARD Disadvantages:

  1. Because ARD does not have the ability to re-dispatch, we end up blocking the original thread to wait on the results of query 1.

From these examples, I conclude that ARD is best used for executing requests that each have multiple asynchronous operations that are independent of one another. Also, the context propagation that ARD provides is an added benefit. Similar context propagation may be introduced as an additional specification in Java EE 6, but it will not likely be a prerequisite for asynchronous servlets.

There are certain caveats that should be considered in both the ARD and RRD features and they are not one size fits all solutions. Feel free to check out details in the Information Center. There is also a good article on RRD at Developer Works.

Tuesday, October 21, 2008

Using WS-Policy to configure WS-ReliableMessaging

My good friend Eleanor Harley sent me this link to 'Real Snail Mail' the other day. It seems like a fantastic idea; probably carbon neutral although arguably not the simplest thing that could possibly work. It is however an entertaining use case for WS-ReliableMessaging which I have been working on for WebSphere Application Server v7.0. Those snail's squish very easily, and without your Acknowledgement snail you'd never know if that vital message was delivered, or had come under some salty security attack.

Did I mention that WS-ReliableMessaging has just shipped in WebSphere Application Server v7.0? Previously delivered as part of the Web Services Feature Pack for WebSphere Application Server v6.1, the function has been enhanced by conformance to the WS-I Reliable Secure Profile and the impact of WS-Policy on configuring WS-ReliableMessaging.

Using WS-Policy with WS-ReliableMessaging provides improved levels of flexibility on when this quality of service is applied to your Web Service messages. We have introduced a new 'strictlyEnforceWSRM' property that can be applied to the client and the service.

It enables you to chose whether your service and client want to enforce Reliable Messaging or simply support Reliable Messaging. WS-Policy then determines what the common configuration option is between the client and server. For example, if your server policy states that it supports WS-ReliableMessaging , and the client is configured to enforce WS-ReliableMessaging , then WS-ReliableMessaging will be used. However, if the client has no WS-ReliableMessaging configured then the server will not use it.


Finally, unlike Real Snail Mail, we have been working hard on WS-ReliableMessaging performance this release as well. I hope you'll appreciate the results.

Using the Spring Framework with WebSphere Application Server v7.0

IBM has been working with SpringSource for a few years now to ensure that WebSphere Application Server continues to be an excellent platform for customers wishing to use the Spring Framework. WebSphere Application Server v7.0 is no exception, and there are a number of new features that you can take advantage of.

AspectJ support
From Spring 2.5 onwards, Spring’s AspectJ support can be utilised. In this example we first define a <tx:advice> that indicates that all methods starting with "get" are PROPAGATION_REQUIRED and all methods starting with "set" are PROPAGATION_REQUIRES_NEW. All other methods use the default transaction settings.

<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="get*" propagation="REQUIRED" read-only="true" />
<tx:method name="set*" propagation="REQUIRES_NEW" />
<tx:method name="*" />
</tx:attributes>
</tx:advice>
Then use <aop:config> to apply those settings to any executed operation defined within the class MyService.

<aop:config>
<aop:pointcut id="myServiceOperation"
expression="execution(* sample.service.MyService.*(..))"/>
<aop:advisor advice-ref="txAdvice"
pointcut-ref="myServiceOperation"/>
</aop:config>
Annotation based configuration
Another alternative mechanism for declaring transaction settings is to use the Spring annotation-based transaction support. This requires the use of Java 5+, and therefore cannot be used with WebSphere Application Server V6.0.2.x.
First add the following to the spring.xml configuration:

<tx:annotation-driven/>

Any methods that require transactional attributes should then be marked with the @Transactional annotation:

@Transactional(readOnly = true)
public String getUserName()
{ ...
JPA configuration
The EJB 3.0 specification defines the Java Persistence API (JPA) as the means for providing portable persistent Java entities. WebSphere Application Server V7 and the WebSphere Application Server V6.1 EJB 3 feature pack both provide implementations of EJB 3 and JPA; it is also possible to use the Apache OpenJPA implementation of JPA with WebSphere Application Server V6.1

Using an Annotation style injection of a JPA EntityManager is possible:

@PersistenceContext
private EntityManager em;
You need this XML code to turn on EntityManager injection in the Spring XML configuration:
<!-- bean post-processor for JPA annotations -->
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>
JMS templates
For JMS message sending or synchronous JMS message receipt, JMSTemplates can be used. This includes the use of Spring’s dynamic destination resolution functionality both via JNDI and true dynamic resolution.

The following example shows the configuration of a resource reference for a ConnectionFactory. This reference is mapped during application deployment to point to a configured, managed ConnectionFactory stored in the application server’s JNDI namespace. The ConnectionFactory is required to perform messaging and should be injected into the Spring JMSTemplate.
<resource-ref>
<res-ref-name>jms/myCF</res-ref-name>
<res-type>javax.jms.ConnectionFactory</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
There is now a defined JNDI name for your ConnectionFactory within the application that can be looked up and injected into the JMSTemplate:
<jee:jndi-lookup id="jmsConnectionFactory" jndi-name=" jms/myCF "/>

<bean id="jmsQueueTemplate"
class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory">
<ref bean="jmsConnectionFactory"/>
</property>
<property name="destinationResolver">
<ref bean="jmsDestResolver"/>
</property>
...
</bean>

<!-- A dynamic resolver -->
<bean id="jmsDestResolver" class="
org.springframework.jms.support.destination.DynamicDestinationResolver"/>

<!-- A JNDI resolver -->
<bean id="jmsDestResolver"
class=" org.springframework.jms.support.destination.JndiDestinationResolver"/>
At run time, the JMSTemplate can locate destinations based on either their JNDI name (as configured in an application resource reference) or through "dynamic resolution," based on the administrative name of the destination configured in WebSphere Application Server; for example, for the JMS myQueue queue, bound to a JNDI reference of jms/myQueue:

JNDI resolution:
jmsTemplate.send("java:comp/env/jms/myQueue", messageCreator);

Dynamic resolution:

jmsTemplate.send("myQueue", messageCreator);


If you have been using the Spring Framework with
WebSphere Application Server already, you may have come across this developerWorks article http://www.ibm.com/developerworks/websphere/techjournal/0609_alcott/0609_alcott.html

I
t has had a facelift recently, and is updated with new content including further configuration details of using WebSphere Application Server with the Spring Framework.

Friday, October 17, 2008

Asynchronous Request Dispatching, Part 1

This is my first blog so I should say a little about myself before I get into things. My name is Maxim, or Max for short, and I’ve been working on the WebContainer since 2003 in various capacities. In Version 7 of WebSphere Application Server (WAS), I acted as the WebContainer architect and the Servlet Expert Group (EG) member representing IBM.

If you have been following the latest in Servlet technology, you would know that the expert group has finally decided to try to standardize asynchronous servlet support for Servlet 3.0. This came as somewhat of a surprise because I had already been working with my colleague Erinn Koonce on a related feature for WAS version 7 called the Asynchronous Request Dispatcher (ARD). Naturally, as options are discussed in the Servlet EG, I compare them to ARD and think about why you’d want to adopt one over the other.

ARD came about as a result of another feature we put in WAS Version 6.1 called the Remote Request Dispatcher (RRD). RRD was a requirement from WebSphere Portal to help them support Web Services for Remote Portlets (WSRP). The problem that WSRP tries to solve is that in some Portal environments one problem web module can bring down the entire application server and its applications. The natural response is to just add more resources to the deployment. However, this may be overkill for the web modules that are well behaved. Since many applications consist of multiple web modules that interact with one another through request dispatcher includes, each web module had to reside on the same server.

RRD provided the mechanism to separate up these applications into other servers or clusters without having to rewrite the interaction logic between web modules. However, there was a major drawback resulting from the cost of packaging and sending of the metadata across the network that each remote request dispatch required. To help alleviate this, Portal wanted a mechanism to execute these remote request dispatches asynchronously. Thus, ARD was born.

The Asynchronous Request Dispatcher does the following:

  • Allows request dispatch includes to execute asynchronously and concurrently
  • Maintains proper ordering of response output
  • Propagates request and thread context
  • Allows decoupling of the dispatching of the request with the position where the content should be inserted
  • Allows for client side aggregation of results

In my next blog, I will discuss the differences between the two proposals.

Monday, October 13, 2008

New WAS v7.0 Web Services Functionality

The Feature Pack for Web Services that WebSphere released on top of WebSphere v6.1 dropped a large chunk of new Java EE 5 functionality related to Web Services in an early fashion. However, version 7.0 completes that work plus introduces some new capabilities that make it easier to developer web services for application developers.

The work (from a technology perspective) focused on 2 specific areas:
  • JCP-based programming model updates
  • Continuation of filling out the Web Services Roadmap
From a JCP-based perspective, the support for JAX-WS and JAXB have been upgraded from the Feature Pack to their 2.1 equivalents. This adds several minor maturity improvements in both cases (such as @XmlSeeAlso support for type substitution) as well as support for a WS-Addressing API for usage within JAX-WS. What this means for end-users is easier and better support for using/developing web services. From an integration perspective, version 7.0 now allows EJB 3.0 developed beans to also be exposed natively as web services. Lastly, v7.0 also introduces support for JSR 109 metadata. This allows annotation information to be overridden, handlers to be defined, and allows testcases like common JAX-WS providers to be used with different types of metadata.

Extending beyond what's in just the JCP specification, the combination of EJB 3.0 beans and JAX-WS annotations also brings support for SOAP/JMS-based beans to JAX-WS-based services. This makes it consistent for those developers looking to use existing reliable transports as a way to send/receive their web services requests. As part of that support, we are tracking the emerging SOAP/JMS standard being developed at W3C.

With respect to filling out the Web Services roadmap, WebSphere v7.0 upgrades support for numerous OASIS and W3C specifications to their official standardized levels (as well as providing support for their pre-OASIS levels for versions previously introduced within WebSphere). OASIS WS-AtomicTransactions and WS-BusinessActivity were both upgraded to their 1.1 levels (so WebSphere supports both 1.0 and 1.1 levels now). The OASIS WS-Trust and WS-SecureConversation specifications have also been upgraded to their OASIS 1.3 levels as well as support for OASIS WS-SecurityPolicy 1.2 being introduced. The OASIS Kerberos Token Profile 1.1 is also now supported in v7.0 providing support for single signon with Keberos tokens.
With the addition of WS-SecurityPolicy also means that we've introduced support for W3C's WS-Policy 1.5 specification. As such, WebSphere now supports the ability to expose WS-Policy assertions for services exposing WSDL endpoints supporting the qualities of service attached at that endpoint (including Security, ReliableMessaging, Addressing, and Transactions). That information is available via the typical ?wsdl exposed for the service as well as a WS-MetadataExchange request to the service endpoint too.

To continue focusing on improving the ease-of-use experience for WS-Policy, WebSphere has also exposed the ability on the client side to configure itself based on the policy assertions exposed in the published service's WSDL file. This makes it easy to have the client configure itself (or calculate an effective policy based on the clients capabilities).

In addition to the standards upgrades, v7.0 continues to focus on other enhancements to the existing functionality (both functional and non-functional) which continues to enhance the maturity and ease-of-use to the development and adminstration of web services. For example, WS-Notification services now can take advantage of PolicySets. PolicySets themselves have been enhanced to support naming the configurations as well as the bindings. These can now be imported and exported easily to allow these pre-configured systems to be moved from one topology to another. For example, moving from a development environment to a test environment to a production environment.

Andrew Spyker had already talked about some of the dramatic performance improvements introduced in v7.0 for web services.

I guess to make a long story short, there's lots of good new stuff in the web services space. I hope that you find the links provided above as a good starting point to quickly get pointers to more information on the topics discussed.

New WAS v7.0 SIP Function

In our last major release of WebSphere Application Server (WAS), we released our Session Initiation Protocol (SIP) functionality. If you need more background on that, you can read this article on developerWorks or check out this presentation to a WebSphere Users Group. In v7.0, we added several pieces of function and further increased our performance.

First, we added support for the following RFCs:

In WAS v6.1, we had supported RFC 3263 aside from section 5 but completed section 5 in this release. The final RFC there, the SIP torture test messages, refers more to a testing effort than function. This torture testing combined with our already rigorous telco carrier grade testing will help WAS v7.0 be one of the most stabile SIP application servers on the market.

Beyond the additional standards support, our SIP Proxy which fronts the application server had several enhancements. It can now support DMZ deployments as discussed here, clustering of the proxy servers when behind the firewall, and an improved load balancing to further reduce call loss in some error conditions associated with retransmissions. Finally, also in our converged Servlet Container, users will notice that the digest authentication support has been made much better.

Friday, October 10, 2008

What's NEW in WebSphere v7

Just wanted to drop a quick post announcing a technical chat for WebSphere version 7 with 6 of our lead architects/developers in WebSphere Application Server and Tom Alcott from our Technical Sales Support Team which will take place on developerWorks. It is scheduled for October 16th, 1-3 pm Eastern time. It's a good opportunity to ask your questions directly to WebSphere lead architects and developers.

Here are links to the developerWorks PodCast site and a little teaser posted as a podcast announcing the chat.

Tuesday, October 7, 2008

DMZ-hardened WebSphere Proxy

One of the main frustrations for customers who have wanted to move from legacy proxy solutions such as the IHS plug-in or Edge Caching Proxy to the WebSphere Proxy (introduced in WAS 6.0.2) has been the additional network hop needed for deployment. The WAS proxy offers significant advantages over the legacy solutions in terms of usability, performance, and systems management integration (see Erik Burckart's Article). However, it is not recommended for deployment inside of a demilitarized zone for security reasons. Thus, deployments with the WebSphere Proxy often required an extra network hop from a DMZ-hardened solution to the proxy itself. The rules have changed in WAS v7.

In WAS v7, customers have access to a DMZ-hardened version of the proxy server. This server ships on a separate installer that contains a subset of the full WAS ND installation. It contains a few notable differences from the ND install that make it suitable for installation in a DMZ:
  • No JDK: The secure proxy utilizes only the JRE, so no compiler is available in the DMZ.
  • Fewer Listening Ports: The security proxy can be configured to have as few as two listening ports (HTTP and HTTPS).
  • Slimmer set of jars: Since the proxy does not require certain functionality (e.g. web container, EJB container, web services, etc.), jars containing this function are omitted from the install for security and memory footprint purposes.
  • Slimmer set of active services: The secure proxy utilizes runtime provisioning (new in v7) to start only the required services. Services like JNDI, application install, and ORB are not started.
In addition to these security features, customers can also toggle certain pieces of function on or off to increase usability or security. Four pieces of function can be toggled for enhanced security/usability: Startup permissions, error handling, remote administration, and dynamic routing.

The DMZ Secure Proxy Server is a nice upgrade over the IHS plug-in and Edge Proxy in terms of feature set, scalability, performance, and WAS integration and I am very excited to see customers begin reaping the benefits of deploying it.

Friday, October 3, 2008

Join me in Harrisburg, PA on the 15th to talk about BPM and SOA

I will be providing development lab and architecture support for one of the many events that are part of the Smart SOA World Tour happening across 100 cities in 10 days. I'm helping out at the one in Harrisburg, PA on Wednesday, October 15th. I just happened to have grown up very near to Harrisburg. Please feel free to join us if you're in the local area. Here is the link to the event. Andrew Sweet will be covering Business Process Management powered by Smart SOA. Christel Slater will be covering Business and IT Alignment. Edward S. Bowlen from Pennsylvania Department of Labor & Industry will also be speaking.