Hi Anders;
I found a bug in RPCMessgeReciver , where that dose not set the namespace
correctly , I fixed it now .
if you can take source update and see u are still getting that error.
Thanks,
Deepal
................................................................
~Future is Open~
----- Original Message -----
From: "Anders Syvertsen" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Wednesday, January 25, 2006 8:13 PM
Subject: Re: [Axis2] Rolling my own services.xml - how to define the in and
out message so it appears in the WSDL.
Thanks for the help, it works better now. Just got one problem with a
service im consuming using Axis 1.2 (java).
I've created this service with axis2-0.94:
public boolean setDatasourcevalues(String authUserName, String
authPassword, int datasourceId, boolean deleteAll, String datasourceXml)
throws AxisFault {
// do something
return false;
}
The services.xml for it looks like,
<service name="DatasourceImport">
<description>
This webservice takes a xml that can will be transformed and
imported it into a datasource as datasourcevalues.
</description>
<parameter name="ServiceClass"
locked="false">no.more.webservice.datasource.DatasourceImportImpl</parameter>
<operation name="setDatasourcevalues">
<messageReceiver
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
</operation>
</service>
Removed the <messageReceivers> element since it just tried to route the
message through the RawXMLINOutReceiver for some reason, when i removed
it it routed it to the RPCMessageReceiver (this is quite strange?? And
also while i'm at it, why is the
org.apache.axis.rpc.receivers.RPCMessageReceiver in the "codegen" module?? )
But the problem im facing right now is, when im calling the service with
Axis 1.2 client, i get this response XML (using TCP monitor),
<?xml version="1.0" encoding="http://schemas.xmlsoap.org/soap/envelope/"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<res:setDatasourcevaluesResponse xmlns:res="http://soapenc/">
<return xmlns="">false</return>
</res:setDatasourcevaluesResponse>
</soapenv:Body>
</soapenv:Envelope>
.. and this is the last line in the stacktrace it get:
{http://xml.apache.org/axis/}stackTrace:org.xml.sax.SAXException:
Invalid element in axis2.apache.org.xsd.SetDatasourcevaluesResponse - return
So i wonder, is that response a valid SOAP response message?
First thanks for your explanation. But it does not work. As long as I use
methods without parameters everything works fine.
I tried mailing a sample project but it was sorted out (of spam).
If I use a method like:
public CustomBean foo(String something)
axis2 gets problems. the output on tomcat side is:
----------------------------------------------------------------------------------------------------------------------------------
- Deploying module : addressing
- Error in loading service impl class for byte code reading :
de.ws.ComplexWS
- Error in schema generating :null
----------------------------------------------------------------------------------------------------------------------------------
and while requesting wsdl file the response is:
<?xml version="1.0" encoding="UTF-8" ?> - <soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header /> - <soapenv:Body>
- <soapenv:Fault>
<faultcode>Client</faultcode> <faultstring>no scheam found for the
service; nested exception is: java.lang.Exception: no scheam found for the
service</faultstring>
<faultactor>http://myAxisServer/role/default</faultactor> - <detail>
<soapenv:Exception>org.apache.axis2.AxisFault: no scheam found for the
service; nested exception is: java.lang.Exception: no scheam found for the
service at
org.apache.axis2.description.AxisService.printUsingWOM(AxisService.java:373)
at
org.apache.axis2.description.AxisService.printWSDL(AxisService.java:322)
at
org.apache.axis2.transport.http.ListingAgent.listService(ListingAgent.java:469)
at
org.apache.axis2.transport.http.ListingAgent.handle(ListingAgent.java:393)
at org.apache.axis2.transport.http.AxisServlet.doGet(AxisServlet.java:111)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689) at
javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595) Caused by: java.lang.Exception:
no scheam found for the service at
org.apache.axis2.description.AxisService2WOM.generateWOM(AxisService2WOM.java:86)
at
org.apache.axis2.description.AxisService.printUsingWOM(AxisService.java:362)
... 20 more</soapenv:Exception> </detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
Is something wrong with my axis installation?
Dominik
As long as I use parameterless operations
[email protected] schrieb am 25.01.06 08:25:04:
the services.xml will look like below;
<service name="MyService" >
<description>
This is my service
</description>
<messageReceivers>
<messageReceiver
mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
</messageReceivers>
<parameter name="ServiceClass">Example</parameter>
</service>
btw. must CustomBean implemente Serializable?
no need , if that is JavaBean that is more enough :)
Thanks,
Deepal
................................................................
~Future is Open~
----- Original Message -----
From: "SOA Work" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Wednesday, January 25, 2006 1:01 PM
Subject: Re: [Axis2] Rolling my own services.xml - how to define the in
and out message so it appears in the WSDL.
I agree. I didn't find good samples too. All samples in the userguide use
the OMElements things.
Could someone give me a services.xml what a class like this must look like
in services.xml
public class Example {
public CustomBean getCustomBean(String name) {
...
}
public CustomBean getCustomBean(String name, String whatever) {
...
}
public CustomBean[] getAllBeans(String whatever) {
...
}
}
btw. must CustomBean implemente Serializable? And more than one service
defined in services.xml must be grouped with <serviceGroup>?
[email protected] schrieb am 25.01.06 07:54:34:
Slowly the mysery services.xml becomes clearer. I succeeded using the
RPCMessageReceiver ;-).
I tested the operation:
public MyBean getBean() {..}
with the coresponding entry in the services.xml:
<service name="Complex">
<description>Complex example</description>
<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</messageReceivers>
<parameter name="ServiceClass" locked="false">
Complex
</parameter>
<operation name="getBean"/>
</service>
so far it worked. But now I added a parameter to the method. Something
like
that:
public MyBean getBean(String name);
and the service was broken. do i always have to define parameters if the
operation takes parameters? whats the syntax for <parameter>? could u
explain the example u gave below?
Is there a documentation for services.xml somewhere? I like the axis2
architecture but without knowing about the services.xml it's kind of hard
to
use!
greetings
peter
--- Ursprüngliche Nachricht ---
Von: "Deepal Jayasinghe" <[EMAIL PROTECTED]>
An: <[email protected]>
Betreff: Re: [Axis2] Rolling my own services.xml - how to define the in
and out message so it appears in the WSDL.
Datum: Wed, 25 Jan 2006 09:35:46 +0600
Hi Anders;
RawXMLINOutMessageReceiver can handle only OMElement case , that is if
the
method take OMElment as input and give OMElement as output , if you want
to
work with other types , use RPCMessageReciver as message receiver and
that
guy can handle those cases , so if your java impl class is like below
class MyService {
public boolean getResult(String userName , String password){
//do smt
return true;
}
}
then your sevrices.xml will look like below;
<service name="ResultInfo">
<description>
Desc.....
</description>
<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
</messageReceivers>
<parameter name="ServiceClass"
locked="false">com.acme.ResultInfo</parameter>
<operation name="getResults">
<message label="in">
<parameter name="username" locked="false">username</parameter>
<parameter name="password" locked="false">password</parameter>
<parameter name="resultId" locked="false">foo</parameter>
</message>
<message label="out">
<parameter name="result" locked="false">username</parameter>
</message>
</operation>
</service>
Thanks,
Deepal
................................................................
~Future is Open~
----- Original Message -----
From: "Anders Syvertsen" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Tuesday, January 24, 2006 11:43 PM
Subject: [Axis2] Rolling my own services.xml - how to define the in and
out
message so it appears in the WSDL.
Hi, i've download the Axis2 0.94 dist and trying to set up a
webservice.
I have successfully created my own .aar and deployed it, it was the
simplest type with a few lines in services.xml..
Now i wonder, can i have a service class (the java impl),
// "Physical" method signature
public OMElement getResults(OMElement) {
.......
}
..that "maps" to, in the WSDL, a method signature,
// "Logical" method signature
public String getResults(String username, String password, int
resultId)
{
..........
}
Been trying to do some with services.xml for this like (with no
success),
<service name="ResultInfo">
<description>
Desc.....
</description>
<parameter name="ServiceClass"
locked="false">com.acme.ResultInfo</parameter>
<operation name="getResults">
<messageReceiver
class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
<message label="in">
<parameter name="username" locked="false">username</parameter>
<parameter name="password" locked="false">password</parameter>
<parameter name="resultId" locked="false">foo</parameter>
</message>
<message label="out">
<parameter name="result" locked="false">username</parameter>
</message>
</operation>
</service>
I dont know if what im asking is possible or not, but the idea is, as
mentioned, to produce
a WSDL that has the method signature i've tried to form in services.xml
that should reflect the
"Logical" method signature, and route to the "Physical" method
signature..
Also, i've been trying to find the XSD for the services.xml with no
luck.
Regards, Anders
--
10 GB Mailbox, 100 FreeSMS/Monat http://www.gmx.net/de/go/topmail
+++ GMX - die erste Adresse für Mail, Message, More +++
__________________________________________________________________________
Erweitern Sie FreeMail zu einem noch leistungsstarkeren E-Mail-Postfach!
Mehr Infos unter http://freemail.web.de/home/landingpad/?mc=021131
______________________________________________________________
Verschicken Sie romantische, coole und witzige Bilder per SMS!
Jetzt bei WEB.DE FreeMail: http://f.web.de/?mc=021193