[jboss-user] [Beginners Corner] - Developing web services
pcankar
do-not-reply at jboss.com
Mon Apr 16 09:33:06 EDT 2007
Hi,
I'm new to JBoss, trying to develop jax-ws web service. I have successfully written the same web service using java 6 embedded application server (just for testing).
When I?m trying to use method with complex type parameter I get the following error:
ERROR:
------
[SOAPFaultExceptionHelper] SOAP request exception
javax.xml.rpc.JAXRPCException: org.jboss.ws.binding.BindingException: javax.xml.bind.JAXBException: Failed to parse source: Requested element stevilo is not allowed in this position in the sequence. The next element should be {http://testws/jaws}stevilo
Method with String parameter is working OK.
Can anyone tell me what I?m doing wrong?
| WSDL:
| -----
| <definitions name='HelloBeanService' targetNamespace='http://testws/jaws' xmlns='http://schemas.xmlsoap.org/wsdl/' xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' xmlns:tns='http://testws/jaws' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
| <types>
| <schema elementFormDefault='qualified' targetNamespace='http://testws/jaws' xmlns='http://www.w3.org/2001/XMLSchema' xmlns:soap11-enc='http://schemas.xmlsoap.org/soap/encoding/' xmlns:tns='http://testws/jaws' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
| <complexType name='SimpleObj'>
| <sequence>
| <element name='stevilo' type='int'/>
| <element name='tekst' nillable='true' type='string'/>
| </sequence>
| </complexType>
|
| </schema>
| </types>
| <message name='HelloBean_testResponse'>
| <part name='result' type='xsd:string'/>
| </message>
| <message name='HelloBean_test'>
| <part name='String_1' type='xsd:string'/>
| </message>
| <message name='HelloBean_simple'>
|
| <part name='SimpleObj_1' type='tns:SimpleObj'/>
| </message>
| <message name='HelloBean_simpleResponse'>
| <part name='result' type='tns:SimpleObj'/>
| </message>
| <portType name='HelloBean'>
| <operation name='simple' parameterOrder='SimpleObj_1'>
| <input message='tns:HelloBean_simple'/>
| <output message='tns:HelloBean_simpleResponse'/>
|
| </operation>
| <operation name='test' parameterOrder='String_1'>
| <input message='tns:HelloBean_test'/>
| <output message='tns:HelloBean_testResponse'/>
| </operation>
| </portType>
| <binding name='HelloBeanBinding' type='tns:HelloBean'>
| <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/>
| <operation name='simple'>
|
| <soap:operation soapAction=''/>
| <input>
| <soap:body namespace='http://testws/jaws' use='literal'/>
| </input>
| <output>
| <soap:body namespace='http://testws/jaws' use='literal'/>
| </output>
| </operation>
| <operation name='test'>
|
| <soap:operation soapAction=''/>
| <input>
| <soap:body namespace='http://testws/jaws' use='literal'/>
| </input>
| <output>
| <soap:body namespace='http://testws/jaws' use='literal'/>
| </output>
| </operation>
| </binding>
|
| <service name='HelloBeanService'>
| <port binding='tns:HelloBeanBinding' name='HelloBeanPort'>
| <soap:address location='http://pcankar:8080/wsprojectapp/HelloBean'/>
| </port>
| </service>
| </definitions>
|
|
|
| HelloBean.java
| --------------
| package testws;
| import testws.Hello;
| import javax.ejb.Stateless;
| import javax.jws.WebMethod;
| import javax.jws.WebService;
| import javax.jws.soap.SOAPBinding;
| @Stateless
| @WebService()
| @SOAPBinding(style=SOAPBinding.Style.RPC,use=SOAPBinding.Use.LITERAL)
| public class HelloBean implements Hello {
| @WebMethod()
| public String test(String parameter){
| return "Hello world. You have called method test with parameter : " + parameter;
| }
| @WebMethod()
| public SimpleObj simple(SimpleObj vhod) {
| SimpleObj izhod = new SimpleObj();
| izhod.setStevilo(vhod.getStevilo());
| izhod.setTekst(vhod.getTekst());
| return izhod;
| }
| }
|
| Hello.java
| ----------
| package testws;
| import javax.ejb.Remote;
| @Remote
| public interface Hello {
| public String test(String parameter);
| public SimpleObj simple(SimpleObj vhod);
| }
|
|
| SimpleObj.java
| --------------
| package testws;
| public class SimpleObj {
| private String tekst="tekst";
| private int stevilo = 1;
| public int getStevilo() {
| return stevilo;
| }
| public void setStevilo(int stevilo) {
| this.stevilo = stevilo;
| }
| public String getTekst() {
| return tekst;
| }
| public void setTekst(String tekst) {
| this.tekst = tekst;
| }
| }
|
|
Used software:
-----------------
JBoss 4.0.4 (jboss-4.0.4.GA-Patch1-installer.jar),
java 5 (jdk-1_5_0_09-windows-i586-p.exe),
Eclipse (eclipse-SDK-3.1.2-win32.zip)
Best regards,
Peter
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4037543#4037543
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4037543
More information about the jboss-user
mailing list