package webservice.core.impl;
import java.util.Map;
import webservice.core.InvokeService;
import webservice.core.RPCClient;
public class InvokeServiceImpl extends RPCClient implements InvokeService {
@Override
public Object[] invokeBlocking(Map<String, Object> request) throws Exception {
Object[] response = this.invokeOp(request);
return response;
}
@Override
public Object[] needKeyStoreInv(Map<String, Object> request) throws Exception {
this.setHTTPSKeyStore();
Object[] response = this.invokeOp(request);
return response;
}
}
package webservice.core;
import java.util.Map;
public interface InvokeService {
// 不需要证书
public Object[] invokeBlocking(Map<String, Object> request) throws Exception;
// 需要证书
public Object[] needKeyStoreInv(Map<String, Object> request) throws Exception;
}
package webservice.core;
import java.util.Map;
import javax.xml.namespace.QName;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
import webservice.constants.WSConstants;
public class RPCClient {
private RPCServiceClient serviceClient;
private Options options;
private EndpointReference targetEPR;
public Object[] invokeOp(Map<String, Object> request) throws AxisFault, ClassNotFoundException {
// 指定调用WebService的URL
targetEPR = new EndpointReference((String) request.get("url"));
// 使用RPC方式调用WebService
serviceClient = new RPCServiceClient();
options = serviceClient.getOptions();
// 确定目标服务地址
options.setTo(targetEPR);
// 确定调用方法
options.setAction((String) request.get("tnsOpName"));
// 指定getPrice方法的参数值
Object[] opArgs = new Object[] { (Object) request.get("paramBean") };
// 设定操作的名称
QName opQName = new QName((String) request.get("nameSpaceURI"), (String) request.get("opName"));
// 指定getPrice方法返回值的数据类型的Class对象
Class[] returnTypes = new Class[] { (Class) request.get("opReturnType") };
return serviceClient.invokeBlocking(opQName, opArgs, returnTypes);
}
public void setHTTPSKeyStore() {
System.setProperty(WSConstants.TRUSTSTORE, WSConstants.TRUSTSTORE_VAL);
System.setProperty(WSConstants.TRUSTSTOREPASSWORD, WSConstants.TRUSTSTOREPASSWORD_VAL);
}
}