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 |
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)
|
Administrator
|
In reply to this post by Mauno
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 |
Administrator
|
In reply to this post by Mauno
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 |
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?
|
Administrator
|
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 |
Ok, I can do multiple submits like that :)
That helped, thanks!
|
In reply to this post by Alessandro Vernet
Here you go.
test.zip |
Administrator
|
In reply to this post by Mauno
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 |
Free forum by Nabble | Edit this page |