1
2
3
4
5
6
7 package net.kwfgrid.gwui.servicestubs;
8
9 import org.apache.log4j.Logger;
10 import org.apache.log4j.Level;
11
12 import java.rmi.RemoteException;
13
14 import com.wingfoot.soap.*;
15 import com.wingfoot.soap.transport.*;
16 import com.wingfoot.soap.encoding.*;
17
18 abstract class WSClient {
19 protected static Logger logger = Logger.getLogger(WSClient.class);
20
21 protected String _serviceURL;
22
23 protected TypeMappingRegistry _dummy;
24
25 protected WSClient(String url) {
26 _serviceURL = url;
27 _dummy = new TypeMappingRegistry();
28 }
29 public String getURL() {
30 return _serviceURL;
31 }
32 public void setURL(String url) {
33 _serviceURL = url;
34 }
35
36 /***
37 * sets transport-protocol, invokes soap-service and tests result for common problems;
38 * @param methodName name of method to invoke
39 * @param params The parameters as name/value pairs. The names must be of type java.lang.String.
40 */
41 protected Envelope makeRPC(String methodName, Object[][] params) throws RemoteException {
42
43 Envelope requestEnvelope = new Envelope();
44 Call call = new Call(requestEnvelope);
45 Envelope responseEnvelope = null;
46
47 try {
48 call.setMethodName(methodName);
49 for (int i=0; i<params.length; i++)
50 call.addParameter((String)params[i][0], params[i][1]);
51
52 J2SEHTTPTransport transport = new J2SEHTTPTransport(_serviceURL, null);
53 transport.getResponse(true);
54
55 if (logger.isDebugEnabled()) {
56 logger.debug("Invoking SOAP call to service "+_serviceURL+":\n"+
57 new String(requestEnvelope.serialize(_dummy, methodName, _serviceURL)));
58 } else {
59 logger.info("Invoking SOAP call to service "+_serviceURL+".");
60 }
61
62 responseEnvelope = call.invoke(transport);
63
64 if (logger.isDebugEnabled()) {
65 logger.debug("Got SOAP response from service "+_serviceURL+":\n"+
66 new String(responseEnvelope.serialize(_dummy, methodName, _serviceURL)));
67 } else {
68 logger.info("Got SOAP response from service "+_serviceURL+".");
69 }
70 } catch (Exception e) {
71 logger.error("exception:",e);
72 throw new RemoteException(e.getMessage(), e);
73 }
74 if( responseEnvelope != null ) {
75 if( responseEnvelope.isFaultGenerated() ) {
76 Fault fault = responseEnvelope.getFault();
77 logger.error("exception on service-site: \n\t\t\t\t FaultCode == " + fault.getFaultCode() + "\n" +
78 "\t\t\t\t FaultString == " + fault.getFaultString() );
79 throw new RemoteException("exception on SOAP-server; FaultString: "+fault.getFaultString()+" FaultCode: "+fault.getFaultCode());
80 }
81 }
82
83 return responseEnvelope;
84 }
85 }
86