Some tips to migrate applications to appservers
Last month a friend of mine asked some tips on what to do to migrate an application running on top of weblogic 6.x to version 9.
As I have previous experience migrating application from/to Sun AppServer and JBoss, I thought it should be useful to someone else, if you have any tip, please write it on the comments section or send me an email, so that I can update this blog.
This is just a bunch of tips, not exclusively related to weblogic, but can be applied to any appserver. And they are not sorted in any important order.
The tips are organized as this example:
- This is the tip
The explanation about this tip.
Here we go:
- Have access to the running system, the system where the application is running on.
To see the settings of: database, queues, JVM parameters, permissions, etc.
- Have full access to the new system, where it will be deployed
It need to be a system where the stop/start/debugging is not a problem.
- Have a way to use the application and test it on the new system.
It can be done by someone else who know the application.
- Have full access to the source code and build files
Some circunstances can lead to change the code: use of vendor APIs that is deprecated; hard coded paths; threads, permission and classloaders issues.
- See at the vendor website, documentation or tools to help the migration task.
- Create the deployment descriptors of the new appserver version.
- Configure the connection pools, queues, factories, JVM parameters, policy permissions, SSL, security on the new system
- Configure the log level to the finest when some problems occurs.
- Check if all the application's libraries is compatible to the appserver and JVM version.
Some classloaders and policy permission can happen
- Document every configuration, changes, etc.
This is very important, as it can be used by others or to configure the production servers.
As an example, I have migrated (in 2005) a huge application that used:
- EJB (Stateless and Stateful) 1.1
- IBM MQ Queues,
- JAAS LDAP Authentication
- Servlet timers
- Distributed Transactions (Oracle and IBM MQ)
- SSL Certificates (client and server)
- EJBs deployed as modules and inside .ears