[jboss-user] [JBossWS] - how to use jboss web service

sdwfxsf do-not-reply at jboss.com
Thu Jun 21 02:01:56 EDT 2007


Hi,
I meet a problem when I use JBoss web service.
On client I use wsconsume to generate the java classes.

The code is:
ApplicationService.java
package greenback.esb.test;import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;

@WebService(name = "ApplicationService", targetNamespace = "http://test.esb.greenback/")
@SOAPBinding(style = SOAPBinding.Style.RPC)
public interface ApplicationService {
    @WebMethod
    @WebResult(partName = "return")
    public String process(
        @WebParam(name = "arg0", partName = "arg0")
        Po arg0);

}


ApplicationServiceService.java

package greenback.esb.test;

import java.net.MalformedURLException;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import javax.xml.ws.WebEndpoint;
import javax.xml.ws.WebServiceClient;

@WebServiceClient(name = "ApplicationServiceService", targetNamespace = "http://test.esb.greenback/", wsdlLocation = "http://192.168.168.188:8080/application/applicationESB?wsdl")
public class ApplicationServiceService
    extends Service
{

    private final static URL APPLICATIONSERVICESERVICE_WSDL_LOCATION;

    static {
        URL url = null;
        try {
            url = new URL("http://192.168.168.188:8080/application/applicationESB?wsdl");
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
        APPLICATIONSERVICESERVICE_WSDL_LOCATION = url;
    }

    public ApplicationServiceService(URL wsdlLocation, QName serviceName) {
        super(wsdlLocation, serviceName);
    }

    public ApplicationServiceService() {
        super(APPLICATIONSERVICESERVICE_WSDL_LOCATION, new QName("http://test.esb.greenback/", "ApplicationServiceService"));
    }

 
    @WebEndpoint(name = "ApplicationServicePort")
    public ApplicationService getApplicationServicePort() {
        return (ApplicationService)super.getPort(new QName("http://test.esb.greenback/", "ApplicationServicePort"), ApplicationService.class);
    }

}

ObjectFactory.java
package greenback.esb.test;

import javax.xml.bind.annotation.XmlRegistry;


/**
 * This object contains factory methods for each 
 * Java content interface and Java element interface 
 * generated in the greenback.esb.test package. 
 * An ObjectFactory allows you to programatically 
 * construct new instances of the Java representation 
 * for XML content. The Java representation of XML 
 * content can consist of schema derived interfaces 
 * and classes representing the binding of schema 
 * type definitions, element declarations and model 
 * groups.  Factory methods for each of these are 
 * provided in this class.
 * 
 */
@XmlRegistry
public class ObjectFactory {


    /**
     * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: greenback.esb.test
     * 
     */
    public ObjectFactory() {
    }

    /**
     * Create an instance of {@link Po }
     * 
     */
    public Po createPo() {
        return new Po();
    }

}

package-info.java
@javax.xml.bind.annotation.XmlSchema(namespace = "http://test.esb.greenback/")
package greenback.esb.test;

Po.java
package greenback.esb.test;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlType;


/**
 * Java class for po complex type.
 * 
 * The following schema fragment specifies the expected content contained within this class.
 * 
 * 
 * <complexType name="po">
 *   <complexContent>
 *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       <sequence>
 *         <element name="age" type="{http://www.w3.org/2001/XMLSchema}int"/>
 *         <element name="name" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *       </sequence>
 *     </restriction>
 *   </complexContent>
 * </complexType>
 * 
 * 
 * 
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "po", propOrder = {
    "age",
    "name"
})
public class Po {

    protected int age;
    protected String name;

    /**
     * Gets the value of the age property.
     * 
     */
    public int getAge() {
        return age;
    }

    /**
     * Sets the value of the age property.
     * 
     */
    public void setAge(int value) {
        this.age = value;
    }

    /**
     * Gets the value of the name property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getName() {
        return name;
    }

    /**
     * Sets the value of the name property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setName(String value) {
        this.name = value;
    }

}



the wsdl file is
- <definitions name="ApplicationServiceService" targetNamespace="http://test.esb.greenback/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://test.esb.greenback/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- 
- <xs:schema targetNamespace="http://test.esb.greenback/" version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
- <xs:complexType name="po">
- <xs:sequence>
  <xs:element name="age" type="xs:int" /> 
  <xs:element minOccurs="0" name="name" type="xs:string" /> 
  </xs:sequence>
  </xs:complexType>
  </xs:schema>
  
- 
   
  
- 
   
  
- 
- 
   
   
  
  
- 
  <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" /> 
- 
  <soap:operation soapAction="" /> 
- 
  <soap:body namespace="http://test.esb.greenback/" use="literal" /> 
  
- 
  <soap:body namespace="http://test.esb.greenback/" use="literal" /> 
  
  
  
- 
- 
  <soap:address location="http://192.168.168.188:8080/application/applicationESB" /> 
  
  
  

The test class is 
import greenback.esb.test.ApplicationService;
import greenback.esb.test.ApplicationServiceService;
import greenback.esb.test.Po;

public class Test {
	public static void main(String[] args){
		ApplicationServiceService ss=new ApplicationServiceService();
		ApplicationService service=ss.getApplicationServicePort();
		Po po=new Po();
		po.setAge(12);
		po.setName("init");
		String s=service.process(po);
		System.out.println(s);
	}
}

Did I write the test class right?If it is not correct,what is the right way?
When I run the test Class ,it throws an exception

Exception in thread "Main Thread" org.jboss.remoting.CannotConnectException: Can not connect http client invoker.
	at org.jboss.remoting.transport.http.HTTPClientInvoker.useHttpURLConnection(HTTPClientInvoker.java:327)
	at org.jboss.remoting.transport.http.HTTPClientInvoker.transport(HTTPClientInvoker.java:133)
	at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:122)
	at org.jboss.remoting.Client.invoke(Client.java:1544)
	at org.jboss.remoting.Client.invoke(Client.java:530)
	at org.jboss.ws.core.soap.SOAPConnectionImpl.callInternal(SOAPConnectionImpl.java:192)
	at org.jboss.ws.core.soap.SOAPConnectionImpl.call(SOAPConnectionImpl.java:109)
	at org.jboss.ws.core.CommonClient.invoke(CommonClient.java:309)
	at org.jboss.ws.core.jaxws.client.ClientImpl.invoke(ClientImpl.java:185)
	at org.jboss.ws.core.jaxws.client.ClientProxy.invoke(ClientProxy.java:163)
	at org.jboss.ws.core.jaxws.client.ClientProxy.invoke(ClientProxy.java:149)
	at $Proxy13.process(Unknown Source)
	at Test.main(Test.java:19)
Caused by: java.lang.ClassCastException: org.apache.axis.message.MessageElement
	at org.jboss.ws.core.soap.SOAPEnvelopeImpl.(SOAPEnvelopeImpl.java:59)
	at org.jboss.ws.core.soap.EnvelopeBuilderDOM.build(EnvelopeBuilderDOM.java:87)
	at org.jboss.ws.core.soap.EnvelopeBuilderDOM.build(EnvelopeBuilderDOM.java:76)
	at org.jboss.ws.core.soap.MessageFactoryImpl.createMessage(MessageFactoryImpl.java:253)
	at org.jboss.ws.core.soap.SOAPMessageUnMarshaller.read(SOAPMessageUnMarshaller.java:75)
	at org.jboss.remoting.transport.http.HTTPClientInvoker.readResponse(HTTPClientInvoker.java:463)
	at org.jboss.remoting.transport.http.HTTPClientInvoker.useHttpURLConnection(HTTPClientInvoker.java:299)
	... 12 more


View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4056271#4056271

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4056271



More information about the jboss-user mailing list