Skip navigation
2013

Before I roll out the version with externalized rules 0.11, here's one more bugfix release - SwanLoom 0.10.6.

 

  • Datasource migration corner cases fixed - those like, driver module exists, but the driver resource doens't; or the jar exists but module.xml not; etc.
  • Security migrator communication with other migrators improved - through getSecurityRealm( String name )
  • JAXB classes can now use BeanValidation 1.1 through Hibernate Validator 5
  • -Ddebug profile added

 

Download and try: https://repository.jboss.org/nexus/content/repositories/releases/org/jboss/migr/as/AsMigrator/0.10.6/AsMigrator-0.10.6.jar

 

Wiki: https://github.com/OndraZizka/jboss-migration/wiki

SwanLoom 0.10.5 is released.

There's a plenty of fixes of bugs which I found when making the rules externalized.

Mostly it's in Datasource Migrator and ResourceAdapterMigrator.

 

Download: https://repository.jboss.org/nexus/content/repositories/releases/org/jboss/migr/as/AsMigrator/

 

The version with externalized rules is underway.

Externalized rules were identified as the key feature of a migration tool.

The reason is that not everyone willing to contribute config migration rules for a new source server may be skilled Java programmer.

Hence, these rules should be definable in easily editable simple files.

 

I've decided to give it a try started working on MIGR-24  Externalize the logic (rules) of migrating data .

 

The logic of config migration is more complex than simple reporting, so the Spring-based rules as used in a related project, WindUp, are not appropriate.

I've abandoned the idea of bending some different-purpose framework and rather designed a proprietary descriptor format, which reflects the needs of the logic, 1:1.

It is a mix of XML definitions, JAXB 2.0 beans, Expression Language, and XSLT 2.0.

 

This is an example of the main descriptor, which refers to JAXB classes written in Groovy, and annotated with further metadata annotations like @Property.

 

<?xml version="1.0" encoding="UTF-8"?>
<migration>

    <migrator name="mail">

        <jaxbBean file="TestJaxbBean.groovy"/>

        <xmlQuery id="mailServices"
            pathMask="${srcServer.dir}/server/${srcServer.profile}/deploy/mail-service.xml"
            jaxbBean="TestJaxbBean"
            xpath="/server/mbean[@code='org.jboss.mail.MailService']"
            subjectLabel="Mail Service config"
        />

        <forEach query="mailServices">
            <action type="cli" script="/subsystem=mail/service=foo:add(name=bar,boo=baz)">
                <filter>
                    //! "smtp.nosuchhost.nosuchdomain.com".equals( it.getSmtpHost() )
                    it.getSmtpHost() != "smtp.nosuchhost.nosuchdomain.com"
                </filter>
            </action>
        </forEach>

        <action type="manual">
            <warning>MailService beans migration is not yet supported.</warning>
            <forEach query="mailServices">
                <filter>
                    //! "smtp.nosuchhost.nosuchdomain.com".equals( it.getSmtpHost() )
                    it.getSmtpHost() != "smtp.nosuchhost.nosuchdomain.com"
                </filter>
                <warning>  MailService will be skipped - JNDI name: ${it.getJndiName()}, MBean name: ${ms.getMbeanName()}</warning>
            </forEach>
        </action>

    </migrator>

</migration>

 

  • XML definitions: Handled by custom processor. See below for syntax.
  • JAXB 2.0 beans: Written in Groovy 2.1, handled by EclipseLink MOXy 2.5 
    • Allows you to read XML or JSON configuration directly into a Java object of simply annotated class.
  • Expression Language: Handled by JUEL 2.2 
    • Allows you to refer to the parts of read configuration using EL, e.g. ${datasources[0].connection.userName}.
  • XSLT 2.0: Handled by Saxon 9.5. 
    • Allows you to transform source server XML config files into target server's config files using XSLT templates.

 

More information is available at project's wiki page Migrator Definition Rules.

The processor of it is under development. If you want to chime in and discuss the format, let me know.

The latest release of SwanLoom, the JBoss AS / EAP configuration migration tool, now creates XML and HTML reports:

 

 

These reports are generated  through JAXB and XSLT, using the annotations of the classes used for data objects during the migration.

See the Reporting wiki page for more details.

A new site focusing on migration to JBoss EAP 6 was released:

 

www.jboss.org/migration

 

Also covered by this blog which is btw currently on the top of Planet Fedora.

 

And SwanLoom, the JBoss EAP configuration migration tool, is featured on it as "early access".

A while back, I've informed that I'm working on a tool to migrate AS 5 config to AS 7.

 

Voilá - it's getting somewhere. The project is moving forward, the structure seems to be stable, and it already migrates the most important stuff.

Also, there's a documentation ready for both users to try the tool, and developers to contribute by implementing missing Migrators.

 

If you'd like to try the tool, download the current staged version and use as described in wiki - How to Run.

And let me know what you think

 

Update: New staged version 0.9.2 available.