您的位置:首页 > 编程语言

使用axis自动生成webservice客户端代码

2014-08-04 16:37 543 查看
利用AXIS生成客户端文件,使得开发webservice更加简单,以下是我的个人代码,

工具:

Myeclipse7.0,axis1.4,tomcat5.5,jdk1.5

一、 下载axis的jar包,我的是axis-bin-1_4.zip包,解压后有axis的lib目录,一会儿我们要用,

二、 在myeclip se中创建自己的webservice工程,这个在的文库里有,

三、 在C盘目录下创建一个批处理文件,我的名字是wsdltojava.bat,内容如下:

set Axis_Lib=E:\jar\axis\asixTool\axis-bin-1_4\axis-1_4\lib

set Java_Cmd=java-Djava.ext.dirs=%Axis_Lib%

set Axis_Servlet=http://localhost:8090/myAxis/services/HelloWorld?wsdl

%Java_Cmd%org.apache.axis.wsdl.WSDL2Java -u %Axis_Servlet%

备注:红色字体我的axis的目录,也就是刚才我解压出来的axis,

蓝色是我的webservice的访问地址,其他的不用处理,

然后双击这个文件,产生以下几个文件:

(1)、目录是:C:\localhost\myAxis\services\HelloWorld

(2)、

四、 将这四个文件拷贝到你的客户端,创建客户端

运行即可

附录代码:

服务端

HelloWorld.java

package webservice.axis.test;

public class HelloWorld {
public String hello(){
return"Hello"+"aaaaaaaaaaaaaaaaaa";
}
}


客户端(通过刚才命令生成的四个文件)

HelloWorld.java

/**
*HelloWorld.java
*
*This file was auto-generated from WSDL
* bythe Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.
*/

package webservice.axis.test.batClient;

public interface HelloWorld extendsjava.rmi.Remote {
public java.lang.String hello() throws java.rmi.RemoteException;
}


HelloWorldService.java

/**
*HelloWorldService.java
*
*This file was auto-generated from WSDL
* bythe Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.
*/

package webservice.axis.test.batClient;

public interface HelloWorldService extendsjavax.xml.rpc.Service {
public java.lang.String getHelloWorldAddress();

public webservice.axis.test.batClient.HelloWorld getHelloWorld() throwsjavax.xml.rpc.ServiceException;

public webservice.axis.test.batClient.HelloWorldgetHelloWorld(java.net.URL portAddress) throws javax.xml.rpc.ServiceException;
}


HelloWorldServiceLocator.java

/**
*HelloWorldServiceLocator.java
*
*This file was auto-generated from WSDL
* bythe Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.
*/

package webservice.axis.test.batClient;

public class HelloWorldServiceLocatorextends org.apache.axis.client.Service implementswebservice.axis.test.batClient.HelloWorldService {

public HelloWorldServiceLocator() {
}

public HelloWorldServiceLocator(org.apache.axis.EngineConfigurationconfig) {
super(config);
}

public HelloWorldServiceLocator(java.lang.String wsdlLoc,javax.xml.namespace.QName sName) throws javax.xml.rpc.ServiceException {
super(wsdlLoc, sName);
}

// Use to get a proxy class for HelloWorld
private java.lang.String HelloWorld_address ="http://localhost:8090/myAxis/services/HelloWorld";

public java.lang.String getHelloWorldAddress() {
return HelloWorld_address;
}

// The WSDD service name defaults to the port name.
private java.lang.String HelloWorldWSDDServiceName ="HelloWorld";

public java.lang.String getHelloWorldWSDDServiceName() {
return HelloWorldWSDDServiceName;
}

public void setHelloWorldWSDDServiceName(java.lang.String name) {
HelloWorldWSDDServiceName = name;
}

public webservice.axis.test.batClient.HelloWorld getHelloWorld() throwsjavax.xml.rpc.ServiceException {
java.net.URL endpoint;
try {
endpoint = new java.net.URL(HelloWorld_address);
}
catch (java.net.MalformedURLException e) {
throw new javax.xml.rpc.ServiceException(e);
}
return getHelloWorld(endpoint);
}

public webservice.axis.test.batClient.HelloWorldgetHelloWorld(java.net.URL portAddress) throws javax.xml.rpc.ServiceException {
try {
webservice.axis.test.batClient.HelloWorldSoapBindingStub _stub = newwebservice.axis.test.batClient.HelloWorldSoapBindingStub(portAddress, this);
_stub.setPortName(getHelloWorldWSDDServiceName());
return _stub;
}
catch (org.apache.axis.AxisFault e) {
return null;
}
}

public void setHelloWorldEndpointAddress(java.lang.String address) {
HelloWorld_address = address;
}

/**
* For the given interface, get the stub implementation.
* If this service has no port for the given interface,
* then ServiceException is thrown.
*/
public java.rmi.Remote getPort(Class serviceEndpointInterface) throwsjavax.xml.rpc.ServiceException {
try {
if(webservice.axis.test.batClient.HelloWorld.class.isAssignableFrom(serviceEndpointInterface)){
webservice.axis.test.batClient.HelloWorldSoapBindingStub _stub = newwebservice.axis.test.batClient.HelloWorldSoapBindingStub(new java.net.URL(HelloWorld_address),this);
_stub.setPortName(getHelloWorldWSDDServiceName());
return _stub;
}
}
catch (java.lang.Throwable t) {
throw new javax.xml.rpc.ServiceException(t);
}
throw new javax.xml.rpc.ServiceException("There is no stubimplementation for the interface:  "+ (serviceEndpointInterface == null ? "null" : serviceEndpointInterface.getName()));
}

/**
* For the given interface, get the stub implementation.
* If this service has no port for the given interface,
* then ServiceException is thrown.
*/
public java.rmi.Remote getPort(javax.xml.namespace.QName portName, ClassserviceEndpointInterface) throws javax.xml.rpc.ServiceException {
if (portName == null) {
return getPort(serviceEndpointInterface);
}
java.lang.String inputPortName = portName.getLocalPart();
if ("HelloWorld".equals(inputPortName)) {
return getHelloWorld();
}
else  {
java.rmi.Remote _stub = getPort(serviceEndpointInterface);
((org.apache.axis.client.Stub) _stub).setPortName(portName);
return _stub;
}
}

public javax.xml.namespace.QName getServiceName() {
return newjavax.xml.namespace.QName("http://localhost:8090/myAxis/services/HelloWorld","HelloWorldService");
}

private java.util.HashSet ports = null;

public java.util.Iterator getPorts() {
if (ports == null) {
ports = new java.util.HashSet();
ports.add(newjavax.xml.namespace.QName("http://localhost:8090/myAxis/services/HelloWorld","HelloWorld"));
}
return ports.iterator();
}

/**
*Set the endpoint address for the specified port name.
*/
public void setEndpointAddress(java.lang.String portName,java.lang.String address) throws javax.xml.rpc.ServiceException {

if("HelloWorld".equals(portName)) {
setHelloWorldEndpointAddress(address);
}
else
{ // UnknownPort Name
throw new javax.xml.rpc.ServiceException(" Cannot set EndpointAddress for Unknown Port" + portName);
}
}

/**
*Set the endpoint address for the specified port name.
*/
public void setEndpointAddress(javax.xml.namespace.QName portName,java.lang.String address) throws javax.xml.rpc.ServiceException {
setEndpointAddress(portName.getLocalPart(), address);
}

}


HelloWorldSoapBindingStub.java

/**
*HelloWorldSoapBindingStub.java
*
*This file was auto-generated from WSDL
* bythe Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.
*/

package webservice.axis.test.batClient;

public class HelloWorldSoapBindingStubextends org.apache.axis.client.Stub implementswebservice.axis.test.batClient.HelloWorld {
private java.util.Vector cachedSerClasses = new java.util.Vector();
private java.util.Vector cachedSerQNames = new java.util.Vector();
private java.util.Vector cachedSerFactories = new java.util.Vector();
private java.util.Vector cachedDeserFactories = new java.util.Vector();

static org.apache.axis.description.OperationDesc [] _operations;

static {
_operations = new org.apache.axis.description.OperationDesc[1];
_initOperationDesc1();
}

private static void _initOperationDesc1(){
org.apache.axis.description.OperationDesc oper;
org.apache.axis.description.ParameterDesc param;
oper = new org.apache.axis.description.OperationDesc();
oper.setName("hello");
oper.setReturnType(newjavax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema","string"));
oper.setReturnClass(java.lang.String.class);
oper.setReturnQName(new javax.xml.namespace.QName("","helloReturn"));
oper.setStyle(org.apache.axis.constants.Style.RPC);
oper.setUse(org.apache.axis.constants.Use.ENCODED);
_operations[0] = oper;

}

public HelloWorldSoapBindingStub() throws org.apache.axis.AxisFault {
this(null);
}

public HelloWorldSoapBindingStub(java.net.URL endpointURL,javax.xml.rpc.Service service) throws org.apache.axis.AxisFault {
this(service);
super.cachedEndpoint =endpointURL;
}

public HelloWorldSoapBindingStub(javax.xml.rpc.Service service) throwsorg.apache.axis.AxisFault {
if (service == null) {
super.service = new org.apache.axis.client.Service();
} else {
super.service = service;
}
((org.apache.axis.client.Service)super.service).setTypeMappingVersion("1.2");
}

protected org.apache.axis.client.Call createCall() throwsjava.rmi.RemoteException {
try {
org.apache.axis.client.Call _call = super._createCall();
if (super.maintainSessionSet) {
_call.setMaintainSession(super.maintainSession);
}
if (super.cachedUsername != null) {
_call.setUsername(super.cachedUsername);
}
if (super.cachedPassword != null) {
_call.setPassword(super.cachedPassword);
}
if (super.cachedEndpoint != null) {
_call.setTargetEndpointAddress(super.cachedEndpoint);
}
if (super.cachedTimeout != null) {
_call.setTimeout(super.cachedTimeout);
}
if (super.cachedPortName != null) {
_call.setPortName(super.cachedPortName);
}
java.util.Enumeration keys = super.cachedProperties.keys();
while (keys.hasMoreElements()) {
java.lang.String key =(java.lang.String) keys.nextElement();
_call.setProperty(key,super.cachedProperties.get(key));
}
return _call;
}
catch (java.lang.Throwable _t) {
throw new org.apache.axis.AxisFault("Failure trying to get the Callobject", _t);
}
}

public java.lang.String hello() throws java.rmi.RemoteException {
if (super.cachedEndpoint == null) {
throw new org.apache.axis.NoEndPointException();
}
org.apache.axis.client.Call _call = createCall();
_call.setOperation(_operations[0]);
_call.setUseSOAPAction(true);
_call.setSOAPActionURI("");
_call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
_call.setOperationName(new javax.xml.namespace.QName("http://test.axis.webservice","hello"));

setRequestHeaders(_call);
setAttachments(_call);
try{        java.lang.Object _resp =_call.invoke(new java.lang.Object[] {});

if (_resp instanceof java.rmi.RemoteException) {
throw (java.rmi.RemoteException)_resp;
}
else {
extractAttachments(_call);
try {
return (java.lang.String)_resp;
} catch (java.lang.Exception_exception) {
return (java.lang.String)org.apache.axis.utils.JavaUtils.convert(_resp, java.lang.String.class);
}
}
}catch (org.apache.axis.AxisFault axisFaultException) {
throw axisFaultException;
}
}

}


最后要感谢网上资源
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: