LDSTechContributeSelf SupportForumWikiJiraProjects

Tomcat and WebSphere

The LDSTech Platform supports development and deployment to two main platforms Tomcat and WebSphere. This document will attempt to help project teams identify what platform to use for their project.

Generally speaking, WebSphere is mostly targeted for Enterprise applications that may need to use certain Enterprise features, but will generally be more difficult to develop with. On the other hand, Tomcat will provide a much simpler platform to develop, deploy, and debug, but it cannot be used if certain Enterprise features are required. That said, the reasons for needing WebSphere or Tomcat will be in the details. The following is a simple list of features and a description of what each platform provides:

Feature Tomcat 6 WebSphere 7
JDK Sun or IBM Java 6 IBM Java 6
Servlet Container Servlet 2.5 JSP 2.1 Servlet 2.5 JSP 2.1
JPA Stack Hibernate Stack Hibernate or WebSphere JPA (not supported by the Stack team, but should work)
DataSource Pooling Oracle UCP WebSphere Connection Pooling
Transactions Resource Local Transactions with Spring's Transaction Abstraction. Does not support multiple DataSources in a single Transaction. If you have this need and need to use Tomcat then consult with a member of the Stack team. WebSphere JTA 1.1 with Spring's Transaction Abstraction. Does support multiple DataSources in a single Transaction (XA Transactions)
Session Replication Not supported. Although load balancers should be configured to use sticky sessions allowing minimal use of sessions on a single node this session information will not be replicated to other nodes. So if a node goes down its session information goes down with it. It is generally recommended to make your applications stateless as much as possible. Session Replication is supported as long as the application is developed correctly (making all information stored in the session Serializable).
Distributed Caching No support for Distributed Caching currently. The Stack team is looking at potentially providing a solution in the future. WebSphere comes with a Distributed Cache called DynaCache. This cache can be used for many things such as caching of web pages and soap envelops. It can also be configured to be used as a second level cache with WebSphere JPA. However, the cache does not support distributed locking which may lead to data inconsistencies between nodes when used with JPA. If a Distributed cache with locking is required for your project then your project may want to look into purchasing IBM ObjectGrid which supports distributed locking and works with Hibernate.
Integration Testing Fully supported since all application services except for the Servlet Container are embedded in the application. Not generally supported since several core features such as Transaction Management requires a container. It is possible to embed JTA transaction managers and such to replace WebSphere functionality in an embedded environment but this type of project configuration is not supported by the Stack though we can help you set something up if needed.
Automated Deploy Supports automated provisioning and deploy to any server requiring only a JDK. Automated deploy to an already provisioned WebSphere server is supported. Auto deploy time provisioning of WebSphere is not currently supported.
IDE Any Java IDE free or commercial with generic Tomcat support is supported. Tools will automate provision and configuration of Tomcat instance. Stack supports using the LDSTech IDE. Any Java IDE that supports WebSphere 7. Unfortunately there are currently no free to download IDEs that support WebSphere 7.
  • Intellij (Tested): Supports WebSphere 7 but currently has some issues regarding correctly deploying "ear" maven projects to WebSphere. To potentially see improvement here vote for issue IDEA-54425. Without this fix the user must update the context root and change classloader to "parent last" in WebSphere's admin console every time the application is updated.
  • MyEclipse Blue (Tested): Supports WebSphere 7 but has limited support for maven projects. Once this is fixed perhaps it will be more usable but for now this IDE is NOT recommended.
  • RAD 7.5 (Tested): Supports WebSphere but doesn't support M2Eclipse. To import a Stack project into RAD 7.5 you may need to use the Maven Eclipse Plugin to import a project into RAD 7.5. Works and you don't need a license see instructions.
  • [1] (Tested): RAD 8 with Eclipse 3.6 based so it works well with m2eclipse and the LDSTech IDE plugins. Best choice if you can acquire a license see instructions.
Community Development Because Tomcat is so much lighter, easier to use, open source, and works with most all free IDEs it is recommended that Tomcat be used for community developed projects. WebSphere is generally not recommended for community development because:
  • The Developer will have to acquire a commercial IDE
  • WebSphere takes a significant amount of time to download, install, and update
  • WebSphere is rather large and not open source so can be more difficult to debug
Organization Support Tomcat is a relatively new container for the organization and support from Middleware and QA may need some time to mature. Also Infrastructural Tooling for Tomcat generally is less sophisticated than for WebSphere. WebSphere has been used in the organization for years. Most Middleware and QA are experienced in working with WebSphere. Generally speaking WebSphere has superior management and monitoring tools.
Enterprise Features (ESB, Ecommerce, EJB, JCA, etc.) Tomcat is a simple servlet container options for enterprise integration development are limited. WebSphere implements full Java EE 5 so it supports EJB, JCA, etc. If your application needs to integrate an Enterprise product the organization will probably look to major vendors. If an IBM product is selected you will probably need to use the WebSphere platform to develop on this product.
This page was last modified on 7 December 2012, at 12:02. This page has been accessed 5,145 times.