1. 개요
IBM에서 제공하는 "IBM WebSphere Application Server Migration Toolkit" 툴에 대해 알아본다.
2. 적용 대상
- WebSphere v5.1 ~ v9 버전을 Liberty 버전으로 마이그레이션 시
- 기존 WebSphere를 WebSphere v8.5.5 버전 혹은 v9 버전으로 마이그레이션 시
- Tomcat, JBoss, WebLogic을 WebSphere v8.5.5 버전 혹은 v9 버전으로 마이그레이션 시
3. 구성
3-1. WebSphere Application Server Migration Discovery Tool
3-2. Migration Toolkit for Application Binaries
애플리케이션 바이너리를 분석하는 커맨드 라인 도구이다. 제공 리포트는 다음과 같다.
- Application Migration Report
- Application Evaluation Report
- Application Inventory Report
- Detailed Migration Analysis Report
3-3. WebSphere Application Server Migration Toolkit
이클립스 플러그인 기반 도구이다. 포함된 내용은 다음과 같다.
- Cloud Migration Tool
- WebSphere Version to Version Application Migration Tool
- Apache Tomcat to WebSphere Application Migration Tool
- JBoss to WebSphere Application Migration Tool
- Oracle to WebSphere Application Migration Tool
- WebLogic to WebSphere Application Migration Tool
- Apache Tomcat to Liberty Configuration Migration Tool
- WebSphere Configuration Migration Tool: JBoss
- WebSphere Configuration Migration Tool: WebLogic
- WebSphere Configuration Migration Tool: WebSphere to Liberty
3-4. WebSphere Configuration Migration Tool
이클립스 플러그인 기반의 WAS 엔진 마이그레이션 도구이다.
- From : WebLogic, JBoss, WebSphere v7.0+
- To : Liberty, WebSphere 8.5.5+
3-4-1. JBoss
JBoss의 경우는 WildFly 8 버전을 기준으로 테스트하였다. WildFly 8.2 버전을 설치 후 default configuration을 변환시켰다. 다음은 jython 결과 파일임.
Cell=AdminConfig.getid('/Cell:' + AdminControl.getCell() + '/') Node=AdminConfig.getid('/Cell:' + AdminControl.getCell() + '/Node:' + AdminControl.getNode() + '/') Server=AdminConfig.getid('/Cell:' + AdminControl.getCell() + '/Node:' + AdminControl.getNode() + '/Server:server1') Server=AdminConfig.getid('/Cell:' + AdminControl.getCell() + '/Node:' + AdminControl.getNode() + '/Server:server1') Node=AdminConfig.getid('/Cell:' + AdminControl.getCell() + '/Node:' + AdminControl.getNode() + '/') Cell=AdminConfig.getid('/Cell:' + AdminControl.getCell() + '/') NodeName=AdminControl.getNode() print 'Started Creating Bus' AdminConfigVar_7=AdminTask.createSIBus(["-bus", "BUS1" , "-busSecurity", "false" ]) AdminTask.addSIBusMember(["-bus", "BUS1" , "-fileStore", "" , "-node", NodeName , "-server", "server1" ]) print 'Finished Creating Bus' AdminConfig.getid('/Cell:' + AdminControl.getCell() + '/' + 'Security:/') print 'Started Creating Queue' AdminTask.createSIBJMSQueue(Server, ["-queueName", "ExpiryQueue" , "-name", "ExpiryQueue" , "-jndiName", "java:/jms/queue/ExpiryQueue" , "-busName", "BUS1" ]) AdminTask.createSIBJMSQueue(Server, ["-queueName", "DLQ" , "-name", "DLQ" , "-jndiName", "java:/jms/queue/DLQ" , "-busName", "BUS1" ]) print 'Finished Creating Queue' print 'Started Creating Connection Factories' AdminTask.createSIBJMSConnectionFactory(Server, ["-jndiName", "java:/ConnectionFactory" , "-name", "InVmConnectionFactory" , "-busName", "BUS1" ]) AdminTask.createSIBJMSConnectionFactory(Server, ["-jndiName", "java:jboss/exported/jms/RemoteConnectionFactory" , "-name", "RemoteConnectionFactory" , "-busName", "BUS1" ]) print 'Finished Creating Connection Factories' print 'Started Creating Queue' AdminTask.createSIBJMSQueue(Server, ["-queueName", "ExpiryQueue" , "-name", "ExpiryQueue" , "-jndiName", "unknown_0" , "-busName", "BUS1" ]) AdminTask.createSIBJMSQueue(Server, ["-queueName", "DLQ" , "-name", "DLQ" , "-jndiName", "unknown_1" , "-busName", "BUS1" ]) print 'Finished Creating Queue' print 'Started Creating Connection Factories' AdminTask.createSIBJMSConnectionFactory(Server, ["-jndiName", "unknown_2" , "-name", "InVmConnectionFactory" , "-busName", "BUS1" ]) AdminTask.createSIBJMSConnectionFactory(Server, ["-jndiName", "unknown_3" , "-name", "RemoteConnectionFactory" , "-busName", "BUS1" ]) print 'Finished Creating Connection Factories' print 'Started Creating JDBC Provider and/or Data Sources' print 'Finishes Creating JDBC Provider and/or Data Sources' print 'Started Creating Mail Session' print 'find protocol provider' AdminConfigVar_8=AdminConfig.getid('/Cell:' + AdminControl.getCell() + '/Node:' + AdminControl.getNode() + '/Server:server1' + 'MailProvider:Built-in Mail Provider/') pplist=AdminConfig.list('ProtocolProvider', AdminConfig.getid('/Cell:' + AdminControl.getCell() + '/Node:' + AdminControl.getNode() + '/Server:server1')).splitlines() for pp in pplist: type = AdminConfig.showAttribute(pp, 'protocol') if type == ('smtp'): smtp = pp elif type == ('smtps'): smtps = pp elif type == ('pop3'): pop3 = pp elif type == ('pop3s'): pop3s = pp elif type == ('imap'): imap = pp elif type == ('imaps'): imaps = pp AdminConfig.create('MailSession', AdminConfigVar_8, [['mailStoreProtocol', ?], ['name', 'java:jboss/mail/Default'], ['mailTransportUser', ''], ['mailTransportProtocol', smtp], ['mailStoreHost', 'unknown'], ['mailStorePassword', ''], ['mailStoreUser', ''], ['description', ''], ['mailFrom', ''], ['jndiName', 'java:jboss/mail/Default'], ['mailTransportPassword', ''], ['mailTransportHost', 'localhost']]) AdminConfig.create('MailSession', AdminConfigVar_8, [['mailStoreProtocol', ?], ['name', 'java:jboss/mail/Default'], ['mailTransportUser', ''], ['mailTransportProtocol', smtp], ['mailStoreHost', 'unknown'], ['mailStorePassword', ''], ['mailStoreUser', ''], ['description', ''], ['mailFrom', ''], ['jndiName', 'java:jboss/mail/Default'], ['mailTransportPassword', ''], ['mailTransportHost', 'localhost']]) AdminConfig.create('MailSession', AdminConfigVar_8, [['mailStoreProtocol', ?], ['name', 'java:jboss/mail/Default'], ['mailTransportUser', ''], ['mailTransportProtocol', smtp], ['mailStoreHost', 'unknown'], ['mailStorePassword', ''], ['mailStoreUser', ''], ['description', ''], ['mailFrom', ''], ['jndiName', 'java:jboss/mail/Default'], ['mailTransportPassword', ''], ['mailTransportHost', 'localhost']]) AdminConfig.create('MailSession', AdminConfigVar_8, [['mailStoreProtocol', ?], ['name', 'java:jboss/mail/Default'], ['mailTransportUser', ''], ['mailTransportProtocol', smtp], ['mailStoreHost', 'unknown'], ['mailStorePassword', ''], ['mailStoreUser', ''], ['description', ''], ['mailFrom', ''], ['jndiName', 'java:jboss/mail/Default'], ['mailTransportPassword', ''], ['mailTransportHost', 'localhost']]) AdminConfig.create('MailSession', AdminConfigVar_8, [['mailStoreProtocol', ?], ['name', 'java:jboss/mail/Default'], ['mailTransportUser', ''], ['mailTransportProtocol', smtp], ['mailStoreHost', 'unknown'], ['mailStorePassword', ''], ['mailStoreUser', ''], ['description', ''], ['mailFrom', ''], ['jndiName', 'java:jboss/mail/Default'], ['mailTransportPassword', ''], ['mailTransportHost', 'localhost']]) AdminConfig.create('MailSession', AdminConfigVar_8, [['mailStoreProtocol', ?], ['name', 'java:jboss/mail/Default'], ['mailTransportUser', ''], ['mailTransportProtocol', smtp], ['mailStoreHost', 'unknown'], ['mailStorePassword', ''], ['mailStoreUser', ''], ['description', ''], ['mailFrom', ''], ['jndiName', 'java:jboss/mail/Default'], ['mailTransportPassword', ''], ['mailTransportHost', 'localhost']]) AdminConfig.create('MailSession', AdminConfigVar_8, [['mailStoreProtocol', ?], ['name', 'java:jboss/mail/Default'], ['mailTransportUser', ''], ['mailTransportProtocol', smtp], ['mailStoreHost', 'unknown'], ['mailStorePassword', ''], ['mailStoreUser', ''], ['description', ''], ['mailFrom', ''], ['jndiName', 'java:jboss/mail/Default'], ['mailTransportPassword', ''], ['mailTransportHost', 'localhost']]) print 'Finished Creating Mail Session' print 'Creating WebSphere Variables' varSubstitutions =AdminConfig.list("VariableSubstitutionEntry",Cell).split(java.lang.System.getProperty("line.separator")) for varSubst in varSubstitutions: getVarName = AdminConfig.showAttribute(varSubst, "symbolicName") print 'Created WebSphere Variables' AdminConfig.save()