Tuesday, September 30, 2008
EJB 3.0 Performance Improvements in WAS V7.0 (up 23%)
Monday, September 29, 2008
What's so great about WS-Policy?
So, exactly what does WS-Policy give us? Conceptually, it's pretty simple: a standard XML format for expressing requirements or capabilities (policies) of a system. To be more precise, it just provides a framework for expressing policies. This is an excellent model for flexibility and extensibility because you can add policies of any 'flavour' within this framework.
A policy flavour or 'domain' might be a proprietary policy - for example, a policy relating to a logging. Alternatively, you can express policies relating to pre-canned standard domains such as WS-SecurityPolicy. So this opens a whole new opportunity: so long as communicating systems understand WS-Policy and the same policy domains, they can exchange information about requirements and capabilities in a standard format. Here are some example uses of this:
- A client could configure itself based on a server's configuration (even if the client and server use different proprietary formats for representing their configurations internally)
- In a large, heterogeneous environment, a standard policy configuration for many machines could be held in a central repository
- A service endpoint could advertise its requirements to all its clients in a non-proprietary way
Finally, WS-Policy provides an algorithm (called intersection) for combining 2 policies together to find an acceptable policy for all parties. So if a client has requirements but also needs to conform to the requirements of the service, you can take the two policies, perform intersection and out pops a policy acceptable to both the client and service.
More about ws-policy support in WAS 7 to follow...
Web Service Performance Improvements in WAS V7.0 (up to 3x)
Thursday, September 25, 2008
Need help with WebSphere scripting..?
WebSphere scripting is a detailed subject with lots of capability. I have had administrators often ask me - "I am new to WebSphere .. or I used to use console UI but now we want to automate all of our WebSphere administration. Where do I begin? .. or I know my script command works but how can I confirm that it covers all the scenarios or topologies?". The jython editor in Rational Application Developer goes a long way in boosting productivity of WebSphere script developers. The script library that we ship with WebSphere 7.0 is another good source for administrators trying to automate WebSphere administration tasks. The script library contains a number of good scripts for common administrative functions such as -
- Application management: install, uninstall, update, start, stop
- Server/Cluster management: create, delete, update, start, stop server or cluster. Need a quick example to set a server JVM property or trace specification? You will find it in there.
- Resource Manipulation: create/manipulate resources for JDBC, J2C, JMS and so on
- Security configuration: manipulate authorization for users and groups
- Ajay
To run WebSphere v7, first you have to install ...
Linux/AIX/HPUX/Solaris non-root installs are fully supported, which sounds fairly straight forward but had huge internal impacts. As well, installation performance has been increased such that the significantly enhanced v7 servers still install in the same time as the previous v6.1 servers. Keeping install performance (time) the same while laying down several hundred more megabytes was a challenge, but the team worked to find many places where a few seconds here-and-there could be shaved, and the net result is almost identical time for v7 versus v6.1 installs.
So, the "Install" should have "no surprises" - the real changes are WebSphere v7 itself. As soon as you can get it, give it a spin ...
Wednesday, September 24, 2008
Have it your way
WebSphere Application Server (WAS) has been on a path for some time now to enable custom solutions. Starting way back with WAS 6.0 (2004), astute system administrators may have noticed that we have started packaging the WebSphere runtime in OSGi bundles located in the "plugins" directory. What OSGi does is allow for some separation of concerns and decoupled code selection, as well dynamic hook points for integration. This, in turn, allows WAS to be configured in a variety of ways that were difficult or impossible in the past.
Take, for example, the use of open source. When used in an application, it can help the application developer achieve their goals in a rapid way by utilizing the efforts of the open source community rather than reinventing similar function. The same could also be said for the server. If you are wondering about how much open source gets used in creating WAS, try taking a look at the
Another area where OSGi has helped is in server footprint. OSGi allows for dynamic code use and enables the possibility of load on first use. What this means is that you now have the option of configuring the server to use only as much of the runtime as is necessary. OSGi alone can't do this, so a fair amount of work has gone into getting the WAS version 7 runtime enabled for dynamic provisioning, some of which can be automated, and some of which must be manually configured. One of the most frequent questions I get around this is how much will it reduce the server footprint. As with all performance related questions, it will depend on the scenario. I will say that we've only touched the tip the iceberg for possibilities here and I think we've got a good head start on the competition. For more details, stay tuned to hear from Andrew Spyker as he posts updates on WAS performance.
Tuesday, September 23, 2008
WebSphere Application Server V7.0 Messaging
To help you discover the new features contained in V7.0 we'll be blogging them at WebSphere and Messaging over the coming weeks.
Here's a taster of some of the new features of WAS V7.0 that we'll cover:
- Consumability improvements
- New console wizards to make configuration easier
- Improved facilities for monitoring and control
- Improved integration with WebSphere MQ
- Using WMQ directly from WAS via the new JCA 1.5 Resource Adapter
- Using WMQ via the SIBus - increased platform coverage and additional facilities
- Clustering improvements
- Better workload balancing
- New options for message routing and visibility
- Response routing within a cluster
- Additional options for MDB activations
- Security changes
- Connectivity from client environments and from servers outside the cell
- Performance improvements
Monday, September 22, 2008
WebSphere and Java Persistence
In WebSphere v7, the WebSphere JPA solution provides the following features beyond the base JPA specification (those marked with an asterisk were provided in the Feature Pack for EJB 3.0 as well):
- Performance Improvements
- DB2 pureQuery (Static SQL) integration
- ObjectGrid Cache plugin
- SQL Statement Batching *
- DB2 Select Statement Optimizations *
- Consumability Improvements
- Access Intent support
- XML Column Mapping *
- DB2Diagnosable exception processing *
- Enhanced tracing using AspectJ *
- Database generated version IDs *
- Command scripting (.bat/.sh) *
- Globalization
- NLS Message Files *
More information on these features can be found in the InfoCenter. Due to the numerous requests we receive concerning the WebSphere JPA solution, we have also decided to create a blog devoted to WebSphere and Java Persistence. Please visit and share your comments as we continue to populate this avenue for sharing information.
Friday, September 19, 2008
New Dynacache Features in WebSphere 7 - Part 1
I am excited about the new Dynacache heap management feature in WAS 7. The primary motivation for introducing this feature is for serviceability. Many times customers trip up on themselves by caching too much stuff. I have lost count of the number of critical situations where I have been hauled from the bed, by some customer critical situation where the server was down due to an OOM error. It is extremely important to size the cache well. Unfortunately this is not an easy thing to do and pre-production stress testing in some cases does not simulate real world traffic which leads to an underutilized cache and thus false confidence in the capacity utilization of the cache.
This is not an easy problem to solve. There is no sizeof operator in Java which will tell us the size of an object in the JVM heap. Therefore we have to use all sorts of smarts, trickery and some help from the application developer to determine the total amount of memory on the JVM heap taken up by the cache. All earlier techniques to determine cache size rely on serializing the cached objects and metadata because that is the only way to accurately determine the size of the objects. In WebSphere 7 we have taken a much light weight approach which does not rely on serialization to determine cache heap size.
Most application servers allow cache size to be controlled by no.of entries. We are taking cache size management to the next level in WebSphere Application Server 7.
What exactly does Dynacache provide ?
WAS Dynacache component will provide an ability to constrain the cache in terms of the JVM heap. In addition to specifying the cache size in MB, Dynacache will also allow customers to set a high water mark and a low water mark for the cache heap consumed. Once cache heap memory reaches the high water mark, dynacache will either discard or evict the least recently used items to disk, till the cache is brought down to the low water mark. This functionality of limiting the cache in terms of the JVM heap will be available if the objects put into the cache that implement the com.ibm.websphere.cache.Sizeable interface. When servlet caching is enabled, all the cached JSP and servlet responses will be Sizeable. This interface will have one method which will return the size of the Object in bytes put into the cache. Dynacache will use the Sizeable interface to estimate the heap size of the cache. This feature will be OFF by default. A customer will have to explicitly enable and set cache limits and watermarks.
How to enable this feature ?

On the Dynacache service panel, WebSphere exposes the Dynamic Cache object cache service and Dynamic Cache servlet cache service. The Dynamic object cache service is always started at server start up. The Dynamic servlet cache service is started when the servlet caching is enabled in WebContainer panel. There is now a checkbox for Memory Cache Size which will control the memory cache size with high/low threshold. In addition to specifying the size the customer can also specify a range for the heap by setting threshold limits. The Servlet and Object Cache instance under the Resources -> Cache Instances have also include the Memory Cache Size control feature.
WebSphere Application Server Version 7.0 Performance Highlights
- General Java EE
- Web Services including JAX-WS and WS-* standards support
- Persistence including EJB3 and JPA
- Startup Time and Memory Footprint
- Security including Java SE, Admininstration, Java EE, and new features
- Java SE Performance
- Hardware exploitation (64-bit, Multicore, Virtualization)
- Support for SIP based communication in our convergence sevlet container
Wednesday, September 17, 2008
Documentation Approach about Web Services for WebSphere
Lastly, another approach is the usage of Redbooks. Members of our development organization participated with other IBM folks to help produce a Feature Pack for Web Services Redbook. These are all meant to be ways to compliment our existing Information Center and provide specific useful scenarios in a more end-to-end fashion to help our developers get on board.
I hope you like the approach and would be interested in hearing your feedback.
Thursday, August 14, 2008
In case you thought the SCA rock stopped rolling...
Beta details here. Of course, our code is based on the Tuscany open source project which I've blogged about before.
I want to thank all of my development and beta team members for all of their hard work.
Friday, July 11, 2008
The TPC is working on a SOA Benchmark proposal submitted by IBM
Thursday, June 26, 2008
eWeek: "IBM WebSphere at 10"
Excerpt:
"IBM Senior Vice President and Software Group General Manager Steve Mills met with three of his top lieutenants in his office back in 1997 to discuss the "Webification" of IBM's enterprise tools. Out of that discussion the IBM WebSphere Application Server was born."I had just joined IBM in 1997 and was working on DB2 for OS/390. While I was trying to figure out what this "mainframe" thing was why anyone would want to manage it from OS/2, smart folks in Raleigh were creating the future. Well done, gents.
Wednesday, June 25, 2008
The Poor (Broke) Man's Java Profiler
Here is how you do it.
- Get the application running under load (or if its a single threaded long running operation, just let the operation get started).
- Send a BREAK signal to the Java process. In Unix/Linux, you can do this with kill -3 ProccessId. In Windows, you can do this by using a program called SendSignal (Note I don't endorse this tool, but happen to find it useful).
You'll see the process start to consume exactly one CPU in the system (on a uniprocessor box, 100% CPU, on a 4-way box, 25% CPU, for example). During this time the JVM is doing its job collecting up all the information for the core. At the end it will dump the core to the working directory of the application. Once it is done (could take some time) the CPU will go back to normal. - Let the process continue for a little while, so the application gets back into its normal state.
- Then repeat the previous steps starting with the BREAK signal three or more times (the more the better).
- Look at the information in the thread dump section (search for "Full thread dump") of the Java core and make sure it looks similar in all three (or more) core dumps. If so, you should have enough certainty to trust what you see in the core dumps.
In a future post, I'll talk about what to look for in the Full Thread Dump, but to get you started, if you see the same method repeatably on the top of the stack of multiple threads, that is what you want to go after first.
In the last two months, I used this approach successfully to find problems in an application server application (bad third party libraries) and a migration script (bad algorithm for handling large amount of data). Both showed rather clearly what needed to be fixed in the program. Also, since this comes with Java, you need no tools to use the "poor man's profiler".
If you have questions or if you find this tip useful, please post a comment on this topic.
Wednesday, June 4, 2008
Tuscany Graduated
Friday, May 23, 2008
Evans Data Study: RAD scores the highest user satisfaction
It was with great pleasure that I read the Evans Data Study that was released this week; the study was a survey of over 1200 IDE users, and the bottom line was that
Cool; that’s what we’ve been trying to deliver, and it’s gratifying to see that our users are pleased with what we deliver.
What was most heartening to me, though, was what the survey didn’t measure; namely
Back to the survey; results were provided giving an overall satisfaction of the different IDEs, and the various capabilities within the IDEs were also rated (how does your debugger rate, how do your web design tools rate, etc). Although we were first place in the overall rating, the
That actually doesn’t surprise me, as the editors were one of the areas I was most concerned about as well – and for that reason, the editors, and the editing experience were one of the areas we’ve spent the most time and energy on, in
- The various deployment descriptor editors in RAD 7.0 were attempting to abstract away the details of the actual changes being made to the underlying files – but we’ve heard from numerous customers that it’s more important to assist the developers… but still “leave them in touch” with the underlying files being updated. We have a great new editor framework (the source of several patents) that we’re using across RAD 7.5, that means developers who make a change in the editor, will have no problem know what (and where) they have changed in the actual file – but at the same time, we still provide lots of help and validation in editing the actual contents. These new editors are getting great feedback from our beta customers.
- We’ve had a big focus on refactoring operations and quick fixes, both of which surface via editors of all shapes and sizes. Eclipse has a great history when it comes to providing refactoring operations, and RAD 7.5 really takes and extends that model; we participate in many existing eclipse refactoring operations now (for example, a rename will do the right thing across the many J2EE artifacts, as well the just the Java code), and we have added several of our own, J2EE specific refactoring operations. These refactoring operations allow us to provide significant help to developers who are updating their code, while leaving the editors to do just that – provide a good, focused, editing experience. Again, the feedback from beta users to date has been very positive on the changes we’ve made.
- JavaScript is increasingly important in a web 2.0 world, and so we’re introducing significant new support for JavaScript in RAD 7.5 – we have a comprehensive new JavaScript editor, which we’ve integrated into all the right places; you’ll now get support like code assist, syntax validation, and colour highlighting whether you are editing a standalone .js file, or a JavaScript snippet embedded in the middle of an HTML file, while you’re using the RAD page design tools.
These are just a few examples of the changes, improvements, and new features we’ve been developing for quite a while in
Next up for me is the RSDC conference, in Orlando – we’ll be presenting and demoing
Tim
Thursday, May 22, 2008
GWC hosting an "Ask the Expert" day next Wednesday
The Global WebSphere Community (a.k.a. http://websphere.org) is hosting their annual "Ask the Experts" day with IBM Development and SOA experts on May 28th. You need to register as a GWC member to participate, but registering is free and fast and painless. The session starts at 10:00 am Eastern and ends at 10:00 pm Eastern, and is basically an opportunity for GWC to both ask questions and submit ideas about WebSphere products, directly to the product teams. Do you have a nagging issue or a great idea? This is your chance to share both with IBM.
Join in!