[JAX-RPC] DII doesn't work. [Help]
shadens Jul 25, 2006 10:56 AMHi JBoss Community,
With the following WSDL, how is source code of a DII client? :_(
http://slide.altervista.org/HelloBean.xml
I've created many example but they don't work. Web service is deployed in
JBoss 4.0.4 GA.
ServiceEndpointAddress is http://notebook:8080/NewVersionAll/HelloBean?wsdl
My last DII Client obtain this error:
operation style: "rpc" not supported
at com.sun.xml.rpc.client.dii.BasicCall.unsupportedOperationStyleException(BasicCall.java:566)
at com.sun.xml.rpc.client.dii.BasicCall.invoke(BasicCall.java:498)
at src.clients.DIIClient.main(DIIClient.java:55)
I've tried to change "rpc" with "document" but without success.
Following client code:
package src.clients; import java.net.URL; import javax.xml.rpc.Service; import javax.xml.rpc.ServiceFactory; import javax.xml.rpc.Call; import javax.xml.rpc.JAXRPCException; import javax.xml.namespace.QName; import javax.xml.rpc.ParameterMode; import javax.xml.rpc.encoding.XMLType; public class DIIClient { public static void main(String[] args) { try { // Create a service class with no WSDL information. You // still must know something about the WSDL, however: the // service's name. QName serviceName = new QName( "http://notebook:8080/NewVersionAll/HelloBean?wsdl", "Risposta"); ServiceFactory factory = ServiceFactory.newInstance(); Service service = factory.createService(serviceName); // Now create a dynamic Call object from this service. // This call object is not yet associated with any // operation. We'll do that below. Call call = service.createCall(); // Next, build up the information about the operation... // The operation name QName operationName = new QName("http://org.jboss.ws/samples/jsr181ejb","reply"); call.setOperationName(operationName); // The input parameter call.addParameter( "String_1", // parameter name XMLType.XSD_STRING, // parameter XML type QName String.class, // parameter Java type class ParameterMode.IN); // parameter mode // The return call.setReturnType(XMLType.XSD_STRING); // The operation is an RPC-style operation. call.setProperty(Call.OPERATION_STYLE_PROPERTY,"rpc"); // The encoding style property value comes from the // binding's operation's input clauses encodingStyle // attribute. Note that, in this case, this call is not // really necessary - the value we're setting this // property to is the default. /*call.setProperty(Call.ENCODINGSTYLE_URI_PROPERTY, "http://schemas.xmlsoap.org/soap/encoding/");*/ // The target endpoint call.setTargetEndpointAddress("http://notebook:8080/NewVersionAll/HelloBean"); String[] params = {"ABC"}; String result = (String) call.invoke(params); System.out.println(result); } catch (Throwable t) { t.printStackTrace(); } /**try{ String urlstr = "http://notebook:8080/NewVersionAll/HelloBean?wsdl"; String argument = "Aaaah!"; System.out.println("Contacting webservice at " + urlstr); URL url = new URL(urlstr); String ns = "http://org.jboss.ws/samples/jsr181ejb"; QName qname = new QName(ns, "Risposta"); QName port = new QName(ns, "EndpointInterface"); QName operation = new QName(ns, "reply"); ServiceFactory factory = ServiceFactory.newInstance(); Service service = factory.createService(url, qname); Call call = service.createCall(port, operation); call.setProperty( com.sun.xml.rpc.client.dii.CallPropertyConstants.CONTENT_NEGOTIATION_PROPERTY, "pessimistic"); System.out.println("hello.hello(" + argument + ")"); System.out.println("output:" + call.invoke(new Object[] {argument})); }catch(Exception e){ e.printStackTrace(); }**/ } }
Thanks to everybody!