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()