Until a few days ago, the jsr181 component was only able to use
the wrapped style: it means the enclosing tag was eventually used
to discover the operation invoked and was discarded.
You should either put an enclosing tag or upgrade to a recent version.
I would suggest that you try with the release that is currently being
voted (see [1]). In such a case, you will have to put a
style="document"
on the jsr181 endpoint.
[1] http://www.nabble.com/-VOTE--ServiceMix-3.0-incubating-tf2239574.html
On 9/8/06, Charles Souillard <[EMAIL PROTECTED]> wrote:
I am now able to deploy my service on jsr181.
When I try to invoke it, I get an xfire exception : Not enough message
parts were received for the operation.
I have checked out xfire project in my eclipse to use it in ebug mode
and I have found the cause of the problem :
The exception is thrown there :
List parts = inMsg.getMessageParts();
if (params.size() < parts.size()) { throw...
params.size = 0
parts.size = 1 which is correct (nut something strange, the doc I send
is : <invokeFault xmlns="urn:invokeUtil:bpel:bsoap">test6</invokeFault>
which is correct as jsr181 operation is called invokeFault but when I
browse the only entry in parts variable I can read that the part is
called input...)
What I understand in the code is that parts represents the expected
parts based on the operation analyse and params variable represents the
actually received inMessage body.
In fact params = (List) context.getInMessage().getBody();
When I browse context.exchange.inMessage, the body is null but I found
the message in xmlStreamReader.mCurrNode...
So I gave you what happens but all this is a bit confused for me...
Have you got an idea ?
For information, the message exchange in the bus sent to jsr181 is :
DEBUG - DeliveryChannelImpl - Accepting
ID:frec445363-37628-1157724227071-6:7 in
DeliveryChannel{servicemix-jsr181}
DEBUG - DeliveryChannelImpl - Accepted: InOut[
id: ID:frec445363-37628-1157724227071-6:7
status: Active
role: provider
interface: {urn:invokeUtil:bpel:bsoap}invokeUtilPT
service: {urn:invokeUtil:bpel:bsoap}InvokeUtilServiceBP
endpoint: invokeUtilPort
operation: {urn:invokeUtil:bpel:bsoap}invokeFault
in: <?xml version="1.0" encoding="UTF-8"?><invokeFault
xmlns="urn:invokeUtil:bpel:bsoap">test6</invokeFault>
]
Thanks for your help
Regards
Charles
Charles Souillard wrote:
> Hi Bernard,
>
> It doesn't work for me...
> Is it possible for you to send me you SA and the java classes of your
> service please ?
> If the mailling list refuses it you can send it directly to me.
> With that I will be able to compare your SA to mine and make the
> needed modifications
>
> Thanks for your help on that topic.
> I was loosing courage as this compojent is described as a very easy
> one to use...
> Charles
>
> Bernard LUPIN wrote:
>> I have the same problem if I put a jar in the
>> <classpath> tag of the jsr181 xbean.xml.
>> But everything works well if I don't pack my classes
>> in a jar (so I put them in the root of the SU's zip)
>> and change the xbean tag to <classpath>.</classpath>.
>>
>> I don't know why this makes a difference.
>> Bernard
>>
>>
>>> -----Message d'origine-----
>>> De : Charles Souillard
>>> [mailto:[EMAIL PROTECTED]
>>> Envoyé : vendredi 8 septembre 2006 09:21
>>> À : [email protected]
>>> Objet : sm-jsr181
>>>
>>> Hi all,
>>>
>>> I am trying to use sm-jsr181 component as I want to
>>> activate a service on the bus as a pojo.
>>> What I want to do is to expose only one operation
>>> which performs a throw...
>>>
>>> public String invokeFault(String input) throws
>>> bsoap.bpel.InvokeUtil.MyFaultMessage {
>>> throw new
>>> bsoap.bpel.InvokeUtil.MyFaultMessage("my Fault");
>>> }
>>>
>>> As I have not been able to do that I have decided to
>>> start with an easyer method :
>>>
>>> package bsoap.bpel.invokeUtil;
>>> public class InvokeUtilImpl {
>>> public InvokeUtilImpl() {}
>>> public String invokeFault(String input) {
>>> return "in invokeFault operation";
>>> }
>>> }
>>>
>>> I have made a jar containig the compiled class of
>>> the one above and I have put it on the su.
>>> My su also contains the .class and the .java file.
>>> In addition a wsdl file describing the service is in
>>> the su and the xbean.xml looks like :
>>> <beans
>>>
>>>
>> xmlns:jsr181="http://servicemix.apache.org/jsr181/1.0"
>>
>>> xmlns:tns="urn:invokeUtil:bpel:bsoap">
>>> <jsr181:endpoint
>>> service="tns:InvokeUtilServiceBP"
>>> pojoClass="bsoap.bpel.invokeUtil.InvokeUtilImpl"
>>> endpoint="invokeUtilPort"
>>> annotations="none"/>
>>> <classpath>
>>> <location>invokeUtil.jar</location>
>>> </classpath>
>>> </beans>
>>>
>>> When I deploy the sa into SM, I get the following
>>> exception :
>>>
>>> <component-task-result
>>>
>>>
>> xmlns="http://java.sun.com/xml/ns/jbi/management-message">
>>
>>> <component-name>servicemix-jsr181</component-name>
>>> <component-task-result-details>
>>> <task-result-details>
>>> <task-id>deploy</task-id>
>>> <task-result>FAILED</task-result>
>>> <message-type>ERROR</message-type>
>>> <task-status-msg>
>>> <msg-loc-info> <loc-token/> <loc-message>Could not
>>> register endpoint</loc-message> </msg-loc-info>
>>> </task-status-msg>
>>> <exception-info>
>>> <nesting-level>1</nesting-level>
>>> <msg-loc-info>
>>> <loc-token/>
>>>
>>> <loc-message>bsoap.bpel.invokeUtil.InvokeUtilImpl in
>>> classloader
>>> bsoap.bpel.invokeUtil.InvokeUtilImpl</loc-message>
>>>
>>>
>> <stack-trace><![CDATA[java.lang.ClassNotFoundException:
>>
>>> bsoap.bpel.invokeUtil.InvokeUtilImpl in classloader
>>> bsoap.bpel.invokeUtil.InvokeUtilImpl
>>> at
>>>
>>>
>> org.apache.xbean.server.classloader.MultiParentClassLoader.loadClass(
MultiParentClassLoader.java:206)
>>
>>
>>> at
>>>
>>>
>> java.lang.ClassLoader.loadClass(ClassLoader.java:251)
>>
>>> at
>>>
>>>
>> java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
>>
>>> at java.lang.Class.forName0(Native Method)
>>> at java.lang.Class.forName(Class.java:242)
>>> at
>>>
>>>
>> org.apache.servicemix.jsr181.Jsr181Endpoint.registerService(
Jsr181Endpoint.java:176)
>>
>>
>>> at
>>>
>>>
>> org.apache.servicemix.jsr181.Jsr181XBeanDeployer.validate(
Jsr181XBeanDeployer.java:42)
>>
>>
>>> at
>>>
>>>
>> org.apache.servicemix.common.xbean.AbstractXBeanDeployer.deploy(
AbstractXBeanDeployer.java:101)
>>
>>
>>> at
>>>
>>>
>> org.apache.servicemix.common.BaseServiceUnitManager.doDeploy(
BaseServiceUnitManager.java:87)
>>
>>
>>> at
>>>
>>>
>> org.apache.servicemix.common.BaseServiceUnitManager.deploy(
BaseServiceUnitManager.java:68)
>>
>>
>>> at
>>>
>>>
>>
org.apache.servicemix.jbi.framework.DeploymentService.deployServiceAssembly
(DeploymentService.java:527)
>>
>>
>>> at
>>>
>>>
>> org.apache.servicemix.jbi.framework.AutoDeploymentService.updateArchive
(AutoDeploymentService.java:295)
>>
>>
>>> at
>>>
>>>
>> org.apache.servicemix.jbi.framework.AutoDeploymentService$2.run(
AutoDeploymentService.java:592)
>>
>>
>>> at
>>>
>>>
>> org.apache.geronimo.connector.work.WorkerContext.run(WorkerContext.java
:291)
>>
>>
>>> at
>>>
>>>
>> EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(Unknown
>>
>>> Source)
>>> at java.lang.Thread.run(Thread.java:595)
>>> ]]></stack-trace>
>>> </msg-loc-info>
>>> </exception-info>
>>> </task-result-details>
>>> </component-task-result-details>
>>> </component-task-result>
>>>
>>>
>>> Can you tell me what I am doing wrong ?
>>>
>>> Thanks a lot
>>> Regards
>>> Charles
>>>
>>
>>
>>
>>
>>
>>
>>
>>
___________________________________________________________________________
>> Découvrez un nouveau moyen de poser toutes vos questions quelque soit
>> le sujet ! Yahoo! Questions/Réponses pour partager vos connaissances,
>> vos opinions et vos expériences. http://fr.answers.yahoo.com
>>
>>
>
--
Cheers,
Guillaume Nodet