Problem to create proxy from bc-soap to bc-ejb

View: New views
7 Messages — Rating Filter:   Alert me  

Problem to create proxy from bc-soap to bc-ejb

by gruault :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hello,

I try to create an SA with Su SOAP (via bc-soap) consumes SU EJB(via bc-ejb) but when a client connect to soap service(CalculatorGRT) i have this Stack Trace for bc-ejb :

[code]
[Petals.Container.Components.petals-bc-ejb]
    Can't read input param : null
org.ow2.petals.bc.ejb.EjbBCException: Can't read input param : null
        at org.ow2.petals.bc.ejb.listener.ServiceManager.retrieveEjbMethodModel(ServiceManager.java:176)
        at org.ow2.petals.bc.ejb.listener.ServiceManager.callEjb(ServiceManager.java:116)
        at org.ow2.petals.bc.ejb.listener.ServiceManager.onJBIMessage(ServiceManager.java:96)
        at org.ow2.petals.bc.ejb.listener.JBIListener.onJBIMessage(JBIListener.java:65)
        at org.ow2.petals.component.framework.listener.MessageExchangeProcessor.processInOutAsProvider(MessageExchangeProcessor.java:489)
        at org.ow2.petals.component.framework.listener.MessageExchangeProcessor.processAsProvider(MessageExchangeProcessor.java:387)
        at org.ow2.petals.component.framework.listener.MessageExchangeProcessor.process(MessageExchangeProcessor.java:313)
        at org.ow2.petals.component.framework.listener.MessageExchangeProcessor.run(MessageExchangeProcessor.java:154)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
Caused by: com.thoughtworks.xstream.io.StreamException:  : no more data available START_DOCUMENT seen \r\n         ... @2:10
        at com.thoughtworks.xstream.io.xml.XppReader.pullNextEvent(XppReader.java:69)
        at com.thoughtworks.xstream.io.xml.AbstractPullReader.readRealEvent(AbstractPullReader.java:126)
        at com.thoughtworks.xstream.io.xml.AbstractPullReader.readEvent(AbstractPullReader.java:119)
        at com.thoughtworks.xstream.io.xml.AbstractPullReader.move(AbstractPullReader.java:98)
        at com.thoughtworks.xstream.io.xml.AbstractPullReader.moveDown(AbstractPullReader.java:83)
        at com.thoughtworks.xstream.io.xml.XppReader.<init>(XppReader.java:37)
        at com.thoughtworks.xstream.io.xml.XppDriver.createReader(XppDriver.java:30)
        at com.thoughtworks.xstream.XStream.fromXML(XStream.java:781)
        at com.thoughtworks.xstream.XStream.fromXML(XStream.java:773)
        at org.ow2.petals.bc.ejb.listener.ServiceManager.retrieveEjbMethodModel(ServiceManager.java:171)
        ... 10 more
Caused by: java.io.EOFException: no more data available START_DOCUMENT seen \r\n         ... @2:10
        at org.xmlpull.mxp1.MXParser.fillBuf(MXParser.java:3015)
        at org.xmlpull.mxp1.MXParser.more(MXParser.java:3026)
        at org.xmlpull.mxp1.MXParser.parseProlog(MXParser.java:1523)
        at org.xmlpull.mxp1.MXParser.nextImpl(MXParser.java:1395)
        at org.xmlpull.mxp1.MXParser.next(MXParser.java:1093)
        at com.thoughtworks.xstream.io.xml.XppReader.pullNextEvent(XppReader.java:52)
        ... 19 more
WARNING 2008-09-12 12:02:18,015 [Petals.Container.Components.petals-bc-soap]
    Got a fault on JBI response
[/code]


Please help me?


thanks



* this is the  schema


client SOAP------> soapBC  -----> ejbBC ---->   jboss with ejb



* this is the SU for Soap BC
[code]
<?xml version="1.0" encoding="UTF-8"?>
<!-- JBI descriptor for the PEtALS component "SOAP", version 3.1 -->
<jbi:jbi version="1.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:jbi="http://java.sun.com/xml/ns/jbi"
        xmlns:petalsCDK="http://petals.ow2.org/components/extensions/version-4.0"
        xmlns:calculator="http://petals.ow2.org/Calculator"
        xmlns:soap="http://petals.ow2.org/components/soap/version-3.1">
       
        <!-- Import a Service into PEtALS or Expose a PEtALS Service => use a BC. -->
        <jbi:services binding-component="true">
               

                <!-- Expose a PEtALS Service => consumes a Service. -->
                <jbi:consumes
                        interface-name="calculator:ejbCalculatorInterface"
        service-name="calculator:ejbCalculatorService" endpoint-name="ejbcalculatorEndpoint"
                                <!-- CDK specific fields -->
                        <petalsCDK:mep>InOut</petalsCDK:mep>
                        <petalsCDK:wsdl>Calculator.wsdl</petalsCDK:wsdl>
                        <!-- SOAP specific fields -->
                        <soap:address>CalculatorGRT</soap:address>
                        <soap:remove-root>false</soap:remove-root>
                        <soap:mode>SOAP</soap:mode>
                </jbi:consumes>
        </jbi:services>
</jbi:jbi>
[/code]


* this is the SU for EJB BC (this BC use a SL  with jboss client lib)
[code]
<jbi:jbi xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:extensions="http://petals.ow2.org/extensions"
xmlns:calculator="http://petals.ow2.org/Calculator"
xmlns:jbi="http://java.sun.com/xml/ns/jbi" version="1.0">
        <jbi:services binding-component="true">
                <jbi:provides interface-name="calculator:ejbCalculatorInterface"
                service-name="calculator:ejbCalculatorService" endpoint-name="ejbcalculatorEndpoint">
                        <extensions:wsdl>Calculator.wsdl</extensions:wsdl>
                        <extensions:params>
                                <extensions:param name="ejb.jndi.name">CalculatorBean</extensions:param>
                                <extensions:param name="java.naming.factory.initial">org.jnp.interfaces.NamingContextFactory</extensions:param>
                                <extensions:param name="java.naming.provider.url">jnp://localhost:1199</extensions:param>
                                <extensions:param name="ejb.version">3.0</extensions:param>
                                <extensions:param name="ejb.home.interface">personne.Calculator</extensions:param>
                        </extensions:params>
                </jbi:provides>
        </jbi:services>
</jbi:jbi>
[/code]



gaetan

Re: Problem to create proxy from bc-soap to bc-ejb

by gruault :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hello,

I solve my problem by changing WSDL format for obtain a SOAP request format like this:

<add>
<int>1</int>
<int>2</int>
</add>


to replace :
<add>
<param0>1</param0>
<param1>2</param1>
</add>

Re: Re: Problem to create proxy from bc-soap to bc-ejb

by Roland Naudin - EBM WebSourcing :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Great, you have solved your problem by yourself.

Sorry about not having respond on your question, the guy who has develop
the EJB comment was on holidays...

/Roland

Le lundi 15 septembre 2008 à 08:22 -0700, gruault a écrit :

> Hello,
>
> I solve my problem by changing WSDL format for obtain a SOAP request format
> like this:
>
> <add>
> <int>1</int>
> <int>2</int>
> </add>
>
>
> to replace :
> <add>
> <param0>1</param0>
> <param1>2</param1>
> </add>
>
> pièce jointe document plein texte (message-footer.txt)
> --
> You receive this message as a subscriber of the petals-users@... mailing list.
> To unsubscribe: mailto:petals-users-unsubscribe@...
> For general help: mailto:sympa@...?subject=help
> OW2 mailing lists service home page: http://www.ow2.org/wws
--
Roland NAUDIN
PEtALS team
EBM Websourcing

Try PEtALS at http://petals.ow2.org




--
You receive this message as a subscriber of the petals-users@... mailing list.
To unsubscribe: mailto:petals-users-unsubscribe@...
For general help: mailto:sympa@...?subject=help
OW2 mailing lists service home page: http://www.ow2.org/wws

Re: Problem to create proxy from bc-soap to bc-ejb

by gruault :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hello,

Now i have another problem ith the EJB Call.

My EJB have an add method with this signature :

Integer  add( Integer x, Integer y)

my SOAP request is like this :
<add>
<int>1</int>
<int>2</int>
</add>

but when bc-ejb  process the request, it try to call EJB method  "urn:add" with this error :

 Can't find method 'urn:add' in EJB interface : $Proxy19


Do you know i can define to not used URN naming?



Re: Re: Problem to create proxy from bc-soap to bc-ejb

by Olivier Fabre - EBM WebSourcing :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hello gaetan,

It seems that the ejb-bc try to call the ejb with the full QNAME of the
operation ("urn:add" in your example). But it has to use only the local
part of the operation name ("add" in your example).

To resolve your problem we need some additional information :

- The stack trace of the error.

- If you use the quickstart version of Petals, you could use the Petals
Webconsole to trace the messages exchanged between the components, and
then try to extract full information about the incoming EJB-BC message
(like operation QName, message content...).
If you do it, please reply with this information.

Regards
Olivier

gruault a écrit :

> Hello,
>
> Now i have another problem ith the EJB Call.
>
> My EJB have an add method with this signature :
>
> Integer  add( Integer x, Integer y)
>
> my SOAP request is like this :
> <add>
> <int>1</int>
> <int>2</int>
> </add>
>
> but when bc-ejb  process the request, it try to call EJB method  "urn:add"
> with this error :
>
>  Can't find method 'urn:add' in EJB interface : $Proxy19
>
>
> Do you know i can define to not used URN naming?
>
>
>
>  

[olivier_fabre.vcf]

begin:vcard
fn:Olivier FABRE
n:FABRE;Olivier
org:eBM Websourcing
adr:;;10 avenue de l'Europe;Ramonville St Agne;;31520;FRANCE
email;internet:olivier.fabre@...
title;quoted-printable:Ing=C3=A9nieur de recherche
url:www.ebmwebsourcing.com
version:2.1
end:vcard




--
You receive this message as a subscriber of the petals-users@... mailing list.
To unsubscribe: mailto:petals-users-unsubscribe@...
For general help: mailto:sympa@...?subject=help
OW2 mailing lists service home page: http://www.ow2.org/wws

Re: Re: Problem to create proxy from bc-soap to bc-ejb

by gruault :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hello,

thanks for your help
this is the stack Trace

[petals.container.components.petals-bc-ejb]-SEVERE 2008-09-16 09:37:07,843 Can't find method 'urn:add' in EJB interface : $Proxy19
org.ow2.petals.bc.ejb.EjbBCException: Can't find method 'urn:add' in EJB interface : $Proxy19
        at org.ow2.petals.bc.ejb.listener.ServiceManager.callEjb(ServiceManager.java:124)
        at org.ow2.petals.bc.ejb.listener.ServiceManager.onJBIMessage(ServiceManager.java:96)
        at org.ow2.petals.bc.ejb.listener.JBIListener.onJBIMessage(JBIListener.java:65)
        at org.ow2.petals.component.framework.listener.MessageExchangeProcessor.processInOutAsProvider(MessageExchangeProcessor.java:489)
        at org.ow2.petals.component.framework.listener.MessageExchangeProcessor.processAsProvider(MessageExchangeProcessor.java:387)
        at org.ow2.petals.component.framework.listener.MessageExchangeProcessor.process(MessageExchangeProcessor.java:313)
        at org.ow2.petals.component.framework.listener.MessageExchangeProcessor.run(MessageExchangeProcessor.java:154)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NoSuchMethodException: $Proxy19.urn:add(java.lang.Integer, java.lang.Integer)
        at java.lang.Class.getMethod(Unknown Source)
        at org.ow2.petals.bc.ejb.listener.ServiceManager.callEjb(ServiceManager.java:122)
        ... 9 more


and information from message :

server / service / endpoint / operation   = 0 / {http://petals.ow2.org/Hello}helloService / helloEndpoint / urn:add

content  =  
<add xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <int>7</int>
    <int>7</int>
</add>



I see source code from petals-bc-ejb  and i see  when it get operation name it made by

operation.getLocalPart()  but operation QName is not good defined :
prefix  = null
localPart = urn:add


Re: Re: Problem to create proxy from bc-soap to bc-ejb

by gruault :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hello,

I solved my problem.

It's my soap client which added a SOAPAction heading: " urn: add".
I changed the parameter setting and now , it's work

thank you