Hi sathwik
After long search we found that the wsdl generated by axis2 is not the same
after and before the call to the process.
Before the call the port adresse is
<wsdl:port name="HelloWorldPort" binding="message:HelloWorldClientSoapBinding">
<soap:address
location="http://isc-lab-gaia01.isc-lab.lan:9090/ode/process/HelloWorldWS.HelloWorldPort/"/>
</wsdl:port>
after the call the port adresse in the wsdl is :
<wsdl:port name="HelloWorldPort" binding="message:HelloWorldClientSoapBinding">
<soap:address
location="http://isc-lab-gaia01.isc-lab.lan:9090//HelloWorldWS.HelloWorldPort/"/>
</wsdl:port>
We found this problem using proxytrace.
We also found the same issue here :
http://mail-archives.apache.org/mod_mbox/ode-user/201311.mbox/%3CCAKyGxMtoofMhX=wTecBGLyP+=9ZSc=6k3fnntzmti61lgqo...@mail.gmail.com%3E
It look like a bug.
regards,
Kévin.
Kevin SEJOURNE
Ingénieur Recherche et Développement
Standard : +33141917777 • Fax : +33141917778
215, avenue Georges Clemenceau • 92024 Nanterre
[cid:[email protected]]<http://www.intrinsec.com/>
[cid:[email protected]]<http://www.intrinsec.com/>
________________________________
De : Sathwik B P <[email protected]>
Envoyé : mardi 4 février 2014 12:05
À : [email protected]
Objet : Re: 404 error of BPEL WebService at the second run
Hi Kevin,
Don't worry about the log message that you have reported. That has no part in
the error you are encountering.
I tried your process on ode 1.3.6 and tomcat 7.0.42 it works fine for me. I
have mocked the external service using SOAPUI.
Can you try to simulate using soapui and see if your are able to reproduce.
regards,
sathwik
________________________________
On Mon, Feb 3, 2014 at 9:29 PM, Kevin SEJOURNE
<[email protected]<mailto:[email protected]>> wrote:
Hello community,
I am trying to setup an HelloWorld bpel process with Apache-ODE
I have put the ode.war(1.3.5/1.3.6) into an Tomcat 7.0.50, and deployed my
helloworld process using the web-interface of ODE.
My process simply receive an message.
Then the the message is translate into the namespace of another webservice and
invoke it.
The result is then translate back to the first namespace and used as reply.
All wsdl files and portLinkType are packed with the process.
Here is my process:
<bpel:sequence name="MainSequence">
<bpel:receive
name="myReceive"
partnerLink="helloWorldPartnerLinkClient"
operation="sayHi"
portType="bonjourlemonde:IHelloWorld"
variable="sayHiRequest"
createInstance="yes">
</bpel:receive>
<bpel:assign name="myInputInitialization">
<bpel:copy>
<bpel:from>
<bpel:literal>
<ns2:sayHi
xmlns:ns2="http://samples.orchestrator.intrinsec.com/">
<text>NoBody</text>
</ns2:sayHi>
</bpel:literal>
</bpel:from>
<bpel:to variable="myInput" part="parameters"/>
</bpel:copy>
</bpel:assign>
<bpel:assign name="sayHiResponseInitialization">
<bpel:copy>
<bpel:from>
<bpel:literal>
<ns2:sayHiResponse
xmlns:ns2="http://samples.orchestrator.intrinsec.com/">
<myHelloText>
<text>Bye</text>
</myHelloText>
</ns2:sayHiResponse>
</bpel:literal>
</bpel:from>
<bpel:to variable="sayHiResponse" part="parameters"/>
</bpel:copy>
</bpel:assign>
<bpel:assign validate="no" name="myAssignIn"> <!-- validate="yes" is
not supported by ODE. -->
<bpel:copy>
<bpel:from variable="sayHiRequest" part="parameters">
<bpel:query>text</bpel:query>
</bpel:from>
<bpel:to variable="myInput" part="parameters">
<bpel:query>text</bpel:query>
</bpel:to>
</bpel:copy>
</bpel:assign>
<bpel:invoke
name="myInvoke"
partnerLink="helloWorldPartnerLinkService"
operation="sayHi"
portType="samples:IHelloWorld"
inputVariable="myInput"
outputVariable="myOutput">
</bpel:invoke>
<bpel:assign validate="no" name="myAssignOut">
<bpel:copy>
<bpel:from variable="myOutput" part="parameters">
<bpel:query>myHelloText/text</bpel:query>
</bpel:from>
<bpel:to variable="sayHiResponse" part="parameters">
<bpel:query>myHelloText/text</bpel:query>
</bpel:to>
</bpel:copy>
</bpel:assign>
<bpel:reply
name="myReply"
partnerLink="helloWorldPartnerLinkClient"
operation="sayHi"
portType="bonjourlemonde:IHelloWorld"
variable="sayHiResponse">
</bpel:reply>
</bpel:sequence>
I cut the wsdl-imports, partnerLinks and variables definition because this is
already very long.
The web-service that provide the implementation is define by :
@WebService(serviceName = "HelloWorldService", portName="HelloWorldPort")
public interface IHelloWorld
{
@GET @Path("sayHi")
public @WebResult(name = "myHelloText") HelloText sayHi(final
@WebParam(name = "text") String text);
}
and
public class HelloWorld implements IHelloWorld
{
@Override
public HelloText sayHi(final String text)
{
return new HelloText((text == null)?"Hello":"Hello " + text);
}
}
This invoked webService is code using CXF, work fine, and is deployed in the
same Tomcat (a standalone server start with jetty Endpoint.publish, give the
same behavior).
Then using the standard wsimport tool I create a client for the webService
expose by ODE.
Calling this web service give me the expected result (Hello very very George).
I can also see the deployement package, process and instance in the ODE
interface. I can query ODE using the 3 managements web-services and get the
same informations as in the web-interface.
Every thing until here is perfect.
Now I'm using my generated client a second time; then I get an 404 http error.
All futher call to the web-service design in my BPEL process will result in a
404 http error while the wsdl corresponding to the web service (and use to
generate the client) can be reach.
The only way to get the BPEL process start again is to restart the Tomcat (or
undeploy ODE, redeploy ODE, redeploy the BPEL process).
No error can be seen in the catalina.out unless I activate change to DEBUG the
log level of ODE (The log is too mush verbose for the question).
The first run of the process is about 800 lines of debug messages without
error, and the succes of the process can be follow step by step.
The second run of the process show this error :
15:35:20,866 DEBUG [DataRetrievalUtil] File does not exist in the Service
Repository! File=META-INF/ServiceData.xml
15:35:20,866 DEBUG [AxisDataLocatorImpl] Check loading failure for file,
META-INF/ServiceData.xml.Message = Failed to load from file,
META-INF/ServiceData.xml
15:35:20,866 DEBUG [AxisDataLocatorImpl] Check loading failure for file,
META-INF/ServiceData.xml
org.apache.axis2.dataretrieval.DataRetrievalException: Failed to load from
file, META-INF/ServiceData.xml
at
org.apache.axis2.dataretrieval.DataRetrievalUtil.buildOM(DataRetrievalUtil.java:64)
at
org.apache.axis2.dataretrieval.AxisDataLocatorImpl.loadServiceData(AxisDataLocatorImpl.java:104)
at
org.apache.axis2.description.AxisService.getDefaultDataLocator(AxisService.java:2949)
...
Caused by: javax.xml.stream.XMLStreamException: File does not exist in the
Service Repository! File=META-INF/ServiceData.xml
at
org.apache.axis2.dataretrieval.DataRetrievalUtil.getInputStream(DataRetrievalUtil.java:103)
...
The 'ServiceData.xml' error drive me to add the 'axis2' tag.
In the ODE documentation/examples/UnitTests there is nothing related to
service.xml/ServiceData.xml and googling on this kind of error doesn't give any
road to solution.
As attachement I have put the complete BPEL process I am using.
Regards,
Kevin
Kevin SEJOURNE
Ingénieur Recherche et Développement
Standard : +33141917777<tel:%2B33141917777> • Fax :
+33141917778<tel:%2B33141917778>
215, avenue Georges Clemenceau • 92024 Nanterre
[cid:[email protected]]<http://www.intrinsec.com/>
[cid:[email protected]]<http://www.intrinsec.com/>