oxf:delegation with porlet

classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|

oxf:delegation with porlet

Mauno
Hi.
I'm having difficulties using oxf:delegation for consuming web services when orbeon xforms is used within liferay portal.

oxf:delegation outputs this exception to ops.log:
2008-01-07 09:29:35,378 ERROR ProcessorService  - Exception with no location data
java.lang.NoClassDefFoundError: EDU/oswego/cs/dl/util/concurrent/ReadWriteLock
        at com.liferay.util.axis.SimpleHTTPSender.<clinit>(SimpleHTTPSender.java:57)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:242)
        at org.apache.axis.utils.ClassUtils$2.run(ClassUtils.java:176)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.apache.axis.utils.ClassUtils.loadClass(ClassUtils.java:160)
        at org.apache.axis.utils.ClassUtils.forName(ClassUtils.java:100)
        at org.apache.axis.deployment.wsdd.WSDDTargetedChain.makeNewInstance(WSDDTargetedChain.java:157)
        at org.apache.axis.deployment.wsdd.WSDDDeployableItem.getNewInstance(WSDDDeployableItem.java:274)
        at org.apache.axis.deployment.wsdd.WSDDDeployableItem.getInstance(WSDDDeployableItem.java:260)
        at org.apache.axis.deployment.wsdd.WSDDDeployment.getTransport(WSDDDeployment.java:410)
        at org.apache.axis.configuration.FileProvider.getTransport(FileProvider.java:257)
        at org.apache.axis.AxisEngine.getTransport(AxisEngine.java:332)
        at org.apache.axis.client.AxisClient.invoke(AxisClient.java:163)
        at org.apache.axis.client.Call.invokeEngine(Call.java:2765)
        at org.apache.axis.client.Call.invoke(Call.java:2748)
        at org.apache.axis.client.Call.invoke(Call.java:1902)
        at org.orbeon.oxf.processor.DelegationProcessor$2.endElement(DelegationProcessor.java:242)
        at org.orbeon.oxf.xml.SAXStore.replay(SAXStore.java:201)
        at org.orbeon.oxf.processor.DebugProcessor$1.readImpl(DebugProcessor.java:76)
        at org.orbeon.oxf.processor.ProcessorImpl$7.read(ProcessorImpl.java:1030)

I'm sending whole instance to another server to process it. Webservice call works with xforms:submission but it's not preferable method for me because I need to do some xslt for the instance before sending it.

Liferay's version is 4.3.4 and Orbeon's is orbeon-3.6.0.200712061930
Reply | Threaded
Open this post in threaded view
|

Re: oxf:delegation with porlet

Mauno
Similar problem occurs without liferay, just tomcat 5.5+orbeon and oxf:delegation gives=

2008-01-07 12:54:20,155 ERROR ProcessorService  - Exception with no location data
java.lang.NoClassDefFoundError
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:242)
        at org.apache.axis.utils.ClassUtils$2.run(ClassUtils.java:176)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.apache.axis.utils.ClassUtils.loadClass(ClassUtils.java:160)
        at org.apache.axis.utils.ClassUtils.forName(ClassUtils.java:100)
        at org.apache.axis.deployment.wsdd.WSDDTargetedChain.makeNewInstance(WSDDTargetedChain.java:157)
        at org.apache.axis.deployment.wsdd.WSDDDeployableItem.getNewInstance(WSDDDeployableItem.java:274)
        at org.apache.axis.deployment.wsdd.WSDDDeployableItem.getInstance(WSDDDeployableItem.java:260)
        at org.apache.axis.deployment.wsdd.WSDDDeployment.getTransport(WSDDDeployment.java:410)
        at org.apache.axis.configuration.FileProvider.getTransport(FileProvider.java:257)
        at org.apache.axis.AxisEngine.getTransport(AxisEngine.java:332)
        at org.apache.axis.client.AxisClient.invoke(AxisClient.java:163)
        at org.apache.axis.client.Call.invokeEngine(Call.java:2765)
        at org.apache.axis.client.Call.invoke(Call.java:2748)
        at org.apache.axis.client.Call.invoke(Call.java:1902)
        at org.orbeon.oxf.processor.DelegationProcessor$2.endElement(DelegationProcessor.java:242)
        at org.orbeon.oxf.xml.SAXStore.replay(SAXStore.java:201)



Mauno wrote
Hi.
I'm having difficulties using oxf:delegation for consuming web services when orbeon xforms is used within liferay portal.

oxf:delegation outputs this exception to ops.log:
2008-01-07 09:29:35,378 ERROR ProcessorService  - Exception with no location data
java.lang.NoClassDefFoundError: EDU/oswego/cs/dl/util/concurrent/ReadWriteLock
        at com.liferay.util.axis.SimpleHTTPSender.<clinit>(SimpleHTTPSender.java:57)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:242)
        at org.apache.axis.utils.ClassUtils$2.run(ClassUtils.java:176)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.apache.axis.utils.ClassUtils.loadClass(ClassUtils.java:160)
        at org.apache.axis.utils.ClassUtils.forName(ClassUtils.java:100)
        at org.apache.axis.deployment.wsdd.WSDDTargetedChain.makeNewInstance(WSDDTargetedChain.java:157)
        at org.apache.axis.deployment.wsdd.WSDDDeployableItem.getNewInstance(WSDDDeployableItem.java:274)
        at org.apache.axis.deployment.wsdd.WSDDDeployableItem.getInstance(WSDDDeployableItem.java:260)
        at org.apache.axis.deployment.wsdd.WSDDDeployment.getTransport(WSDDDeployment.java:410)
        at org.apache.axis.configuration.FileProvider.getTransport(FileProvider.java:257)
        at org.apache.axis.AxisEngine.getTransport(AxisEngine.java:332)
        at org.apache.axis.client.AxisClient.invoke(AxisClient.java:163)
        at org.apache.axis.client.Call.invokeEngine(Call.java:2765)
        at org.apache.axis.client.Call.invoke(Call.java:2748)
        at org.apache.axis.client.Call.invoke(Call.java:1902)
        at org.orbeon.oxf.processor.DelegationProcessor$2.endElement(DelegationProcessor.java:242)
        at org.orbeon.oxf.xml.SAXStore.replay(SAXStore.java:201)
        at org.orbeon.oxf.processor.DebugProcessor$1.readImpl(DebugProcessor.java:76)
        at org.orbeon.oxf.processor.ProcessorImpl$7.read(ProcessorImpl.java:1030)

I'm sending whole instance to another server to process it. Webservice call works with xforms:submission but it's not preferable method for me because I need to do some xslt for the instance before sending it.

Liferay's version is 4.3.4 and Orbeon's is orbeon-3.6.0.200712061930
Reply | Threaded
Open this post in threaded view
|

Re: oxf:delegation with porlet

Alessandro Vernet
Administrator
In reply to this post by Mauno
Mauno wrote
I'm sending whole instance to another server to process it. Webservice call works with xforms:submission but it's not preferable method for me because I need to do some xslt for the instance before sending it.
One way around this is to submit the instance to a service (XPL) that does the transformation, returns the transformed XML to XForms that you store in another instance, and submit from XForms with an xforms:submission to the Web service. Independently of the issue with the delegation processor, I would implement this that way as using an xforms:submission is the prefered way to call a web service.

Alex
Reply | Threaded
Open this post in threaded view
|

Re: oxf:delegation with porlet

Alessandro Vernet
Administrator
In reply to this post by Mauno
Mauno wrote
Similar problem occurs without liferay, just tomcat 5.5+orbeon and oxf:delegation gives=

2008-01-07 12:54:20,155 ERROR ProcessorService  - Exception with no location data
java.lang.NoClassDefFoundError
[...]
Would you be able to create and share with us a simple example with just one XHTML and one XPL file, both in a directory under apps? This would help us to reproduce this problem.

Alex
Reply | Threaded
Open this post in threaded view
|

Re: oxf:delegation with porlet

Mauno
In reply to this post by Alessandro Vernet
Your solution sounds great alternative. How do I send it automatically when flow return from that specific xpl to xforms?

I managed to do xforms:send when xforms-ready event occurs but it does it when I use other xpls. Is there a way to control it to do submission only when previous page-flow was xxxyyy.xpl?


Alessandro Vernet wrote
Mauno wrote
I'm sending whole instance to another server to process it. Webservice call works with xforms:submission but it's not preferable method for me because I need to do some xslt for the instance before sending it.
One way around this is to submit the instance to a service (XPL) that does the transformation, returns the transformed XML to XForms that you store in another instance, and submit from XForms with an xforms:submission to the Web service. Independently of the issue with the delegation processor, I would implement this that way as using an xforms:submission is the prefered way to call a web service.

Alex
Reply | Threaded
Open this post in threaded view
|

Re: oxf:delegation with porlet

Alessandro Vernet
Administrator
Mauno wrote
Your solution sounds great alternative. How do I send it automatically when flow return from that specific xpl to xforms?

I managed to do xforms:send when xforms-ready event occurs but it does it when I use other xpls. Is there a way to control it to do submission only when previous page-flow was xxxyyy.xpl?
I am not sure that I understand what your question is. Just to clarify, you would do in a sequence of actions:

<xforms:send submission="submission-that-transforms-the-instance"/>
<xforms:send submission="submission-that-submits-the-instance-to-web-service"/>

Does this help?

Alex
Reply | Threaded
Open this post in threaded view
|

Re: oxf:delegation with porlet

Mauno
Ok, I can do multiple submits like that :)

That helped, thanks!

Alessandro Vernet wrote
Mauno wrote
Your solution sounds great alternative. How do I send it automatically when flow return from that specific xpl to xforms?

I managed to do xforms:send when xforms-ready event occurs but it does it when I use other xpls. Is there a way to control it to do submission only when previous page-flow was xxxyyy.xpl?
I am not sure that I understand what your question is. Just to clarify, you would do in a sequence of actions:

<xforms:send submission="submission-that-transforms-the-instance"/>
<xforms:send submission="submission-that-submits-the-instance-to-web-service"/>

Does this help?

Alex
Reply | Threaded
Open this post in threaded view
|

Re: oxf:delegation with porlet

Mauno
In reply to this post by Alessandro Vernet
Here you go.

Alessandro Vernet wrote
Mauno wrote
Similar problem occurs without liferay, just tomcat 5.5+orbeon and oxf:delegation gives=

2008-01-07 12:54:20,155 ERROR ProcessorService  - Exception with no location data
java.lang.NoClassDefFoundError
[...]
Would you be able to create and share with us a simple example with just one XHTML and one XPL file, both in a directory under apps? This would help us to reproduce this problem.

Alex
test.zip
Reply | Threaded
Open this post in threaded view
|

Re: oxf:delegation with porlet

Alessandro Vernet
Administrator
In reply to this post by Mauno
Mauno wrote
Ok, I can do multiple submits like that :)

Alessandro Vernet wrote
<xforms:send submission="submission-that-transforms-the-instance"/>
<xforms:send submission="submission-that-submits-the-instance-to-web-service"/>
Note that an alternative is to call the XPL that does transformation directly from XPath using xxforms:call-xpl(). You would then use an <xforms:insert origin="xxforms:call-xpl(...)"> instead of the first submission. On the upside, this is simpler (no need to have an additional <xforms:submission>, and entry in the page flow) and this is potentially faster. On the downside, you need to use an Orbeon-specific XForms extension.

Alex