1 Reply Latest reply: Apr 4, 2012 11:01 AM by Tom Cunningham RSS

How do I reference jarred classes in my Smooks Groovy script

Christian Cheng Newbie

I want to use mixed DOM and SAX processing with Groovy in my Smooks action.  My Smooks config file is:

 

<?xml version="1.0" encoding="UTF-8"?>
<smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd" xmlns:g="http://www.milyn.org/xsd/smooks/groovy-1.1.xsd">
  <params>
    <param name="stream.filter.type">SAX</param>
  </params>
  <g:groovy executeOnElement="test">
    <g:imports>
      import com.sample.Test;
      import com.sample.TestInJar;
    </g:imports>
    <g:script>
      <!--
        println "*** Creating Test ***";
        def test = new Test();
        println "*** Created Test ***";
        println "*** Creating TestInJar ***";
        def testInJar = new TestInJar();
        println "*** Created TestInJar ***";
      -->
    </g:script>
  </g:groovy>
</smooks-resource-list>

 

This works in my local JBossESB Server 4.7 installation but doesn't in our project's test server running JBoss SOA-P 5.0.0.  The output in the server log is:

 

2012-04-04 11:51:37,974 INFO  [STDOUT] (pool-287-thread-1) Hello: 
2012-04-04 11:51:37,974 INFO  [STDOUT] (pool-287-thread-1) [<test:test xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:test="http://www.example.org/test">?</
test:test>].
2012-04-04 11:51:37,974 DEBUG [org.milyn.cdr.SmooksResourceConfigurationList] (pool-287-thread-1) Resource [Target Profile: [[null-dom]], Selector: [global-parameters], Sele
ctor Namespace URI: [null], Resource: [null], Num Params: [1]] not targeted at profile [org.milyn.profile.Profile#default_profile].  Sub Profiles: []
2012-04-04 11:51:37,975 DEBUG [org.milyn.cdr.SmooksResourceConfigurationList] (pool-287-thread-1) Resource [Target Profile: [[null-sax]], Selector: [global-parameters], Sele
ctor Namespace URI: [null], Resource: [null], Num Params: [1]] not targeted at profile [org.milyn.profile.Profile#default_profile].  Sub Profiles: []
2012-04-04 11:51:37,983 DEBUG [org.milyn.delivery.ContentDeliveryConfigBuilder] (pool-287-thread-1) Request to attempt ContentHandlerFactory creation based on a null/empty r
esource type.
2012-04-04 11:51:38,024 DEBUG [org.milyn.smooks.scripting.groovy.GroovyContentHandlerFactory] (pool-287-thread-1) Failed to create Visitor class instance directly from scrip
t:
==========================


      
        println "*** Creating Test ***";
        def test = new Test();
        println "*** Created Test ***";
        println "*** Creating TestInJar ***";
        def testInJar = new TestInJar();
        println "*** Created TestInJar ***";
      
    
==========================
 Will try applying Visitor template to script.
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed, script1333511497996.groovy: 4: unable to resolve class Test 
 @ line 4, column 20.script1333511497996.groovy: 7: unable to resolve class TestInJar 
 @ line 7, column 25.
2 errors


        at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:296)
        at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:787)
        at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:438)
        at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:277)
        at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:248)
        at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:243)
        at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:205)
        at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:215)
        at org.milyn.smooks.scripting.groovy.GroovyContentHandlerFactory.create(GroovyContentHandlerFactory.java:179)
        at org.milyn.delivery.ContentDeliveryConfigBuilder$ContentHandlerExtractionStrategy.addCDU(ContentDeliveryConfigBuilder.java:620)
        at org.milyn.delivery.ContentDeliveryConfigBuilder$ContentHandlerExtractionStrategy.applyCDUStrategy(ContentDeliveryConfigBuilder.java:567)
        at org.milyn.delivery.ContentDeliveryConfigBuilder$ContentHandlerExtractionStrategy.applyStrategy(ContentDeliveryConfigBuilder.java:533)
        at org.milyn.delivery.ContentDeliveryConfigBuilder$SmooksResourceConfigurationTableIterator.iterate(ContentDeliveryConfigBuilder.java:708)
        at org.milyn.delivery.ContentDeliveryConfigBuilder$SmooksResourceConfigurationTableIterator.access$300(ContentDeliveryConfigBuilder.java:687)
        at org.milyn.delivery.ContentDeliveryConfigBuilder.extractContentHandlers(ContentDeliveryConfigBuilder.java:481)
        at org.milyn.delivery.ContentDeliveryConfigBuilder.load(ContentDeliveryConfigBuilder.java:346)
        at org.milyn.delivery.ContentDeliveryConfigBuilder.getConfig(ContentDeliveryConfigBuilder.java:146)
        at org.milyn.container.standalone.StandaloneExecutionContext.<init>(StandaloneExecutionContext.java:88)
        at org.milyn.container.standalone.StandaloneExecutionContext.<init>(StandaloneExecutionContext.java:62)
        at org.milyn.Smooks.createExecutionContext(Smooks.java:356)
        at org.jboss.soa.esb.smooks.SmooksAction.process(SmooksAction.java:201)
        at org.jboss.soa.esb.listeners.message.ActionProcessingPipeline.processPipeline(ActionProcessingPipeline.java:635)
        at org.jboss.soa.esb.listeners.message.ActionProcessingPipeline.processPipeline(ActionProcessingPipeline.java:589)
        at org.jboss.soa.esb.listeners.message.ActionProcessingPipeline.process(ActionProcessingPipeline.java:419)
        at org.jboss.soa.esb.listeners.message.MessageAwareListener$TransactionalRunner.run(MessageAwareListener.java:540)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)
2012-04-04 11:51:38,535 WARN  [org.jboss.soa.esb.listeners.message.ActionProcessingPipeline] (pool-287-thread-1) No fault address defined for fault message! To: JMSEpr [ Por
tReference < <wsa:Address jms:0.0.0.0:1099#queue/quickstart_helloworld_Request_esb/>, <wsa:ReferenceProperties jbossesb:java.naming.factory.initial : org.jnp.interfaces.Nami
ngContextFactory/>, <wsa:ReferenceProperties jbossesb:java.naming.provider.url : 0.0.0.0:1099/>, <wsa:ReferenceProperties jbossesb:java.naming.factory.url.pkgs : org.jnp.int
erfaces/>, <wsa:ReferenceProperties jbossesb:destination-type : queue/>, <wsa:ReferenceProperties jbossesb:destination-name : queue/quickstart_helloworld_Request_esb/>, <wsa
:ReferenceProperties jbossesb:specification-version : 1.1/>, <wsa:ReferenceProperties jbossesb:connection-factory : ConnectionFactory/>, <wsa:ReferenceProperties jbossesb:pe
rsistent : true/>, <wsa:ReferenceProperties jbossesb:acknowledge-mode : AUTO_ACKNOWLEDGE/>, <wsa:ReferenceProperties jbossesb:transacted : false/>, <wsa:ReferenceProperties 
jbossesb:type : urn:jboss/esb/epr/type/jms/> > ] MessageID: 4e8c9d40-ed6a-437c-a150-cfb77a250ac3 RelatesTo: jms:correlationID#4e8c9d40-ed6a-437c-a150-cfb77a250ac3 

 

It would seem that there is a bug in JBoss SOA-P 5.0.0 which prevents it from loading jarred classes into the classpath?  Or is my Smooks config file lacking some sort of setting that JBoss SOA-P 5.0.0 needs to "see" those jarred classes?  I have also attached the ESB and jar projects if anyone wants to try them out.