利用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;
}
}
}
最后要感谢网上资源