手把手教你用axis1.4搭建webservice

1、先下载axis jar包:axis-bin-1_4.zip。下载地址: http://ws.Apache.org/axis/。

当然这个包其实是不全面的,像activation.jar之类的,完全的Lib会在附件里提供。

2、解压好后,将webapps目录下的axis拷贝到tomcat_home的webapps下面。

3、在myeclipse中新建一个web项目,取名叫testWebservice.并新建一个包名叫webservice.axis.wsdd,

再新建一个class名叫:HelloWorldWSDD。

HelloWorldWSDD源代码如下:

package webservice.axis.wsdd;
public class CopyOfHelloWorldWSDD {

	private int requestCount=0;
	
	public String hello(String cardNo){
		requestCount++;
		System.out.println("requestCount="+requestCount);
		System.out.println("Received:"+cardNo);
		return "Hello"+cardNo;
	}
	
	
	public float add(float a,float b){
		requestCount++;
		String result="a="+a+",b"+b;
		System.out.println("requestCount"+requestCount);
		System.out.println("Received:"+result);
		
		return a+b;
	}
	
}
 

4、将tomcat_home\webapps\axis\WEB-INF\lib下面所有的jar包拷贝到项目中的Lib中。

5、先部署一下web项目,再运行tomcat,运行http://localhost:8080/axis调试下是否安装成功。然后将tomcat_home\webapps\axis\WEB-INF\lib所有的jar包同时拷贝到tomcat_home\lib下面。此时我们的webservice还不会出现在调试列表里,因为还有很多配置工作没有做。

6、下面将tomcat_home\webapps\testWebservice\WEB-INF\classes\下的webservice文件夹复制到tomcat_home\webapps\axis\WEB-INF\classes下面。这步的目的就是以后客户端访问axis时能看见我们的websevice.

7、在tomcat_home\webapps\axis\WEB-INF下面文件deploy.wsdd,在里面输入:

<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="HelloWorldWSDD" provider="java:RPC">
<parameter name="className" value="webservice.axis.wsdd.HelloWorldWSDD" />
<parameter name="allowedMethods" value="*" />
<parameter name="scope" value="request" />
</service>
</deployment>

 8、运行CMD,进入目录到tomcat_home\webapps\axis\WEB-INF\,输入如下命令:

java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient  deploy.wsdd

 注意:运行此步时要保证tomcat是运行着的,否则会出现connection refuesed的错误。如果运行成功,会提示done processing.而且会生成一个文件server-config.wsdd。

9、此时已经快完成了。可以在浏览器里输入http://localhost:8080/axis/services。看看有没有新增加一个叫HelloWorldWSDD的webservice.如果有,那么就是成功啦。

其他简单测试方法:

1、在浏览器输入http://localhost:8080/axis/services/HelloWorldWSDD

2、在浏览器输入http://localhost:8080/axis/servlet/AxisServlet

2者都可以用来简单测试webservice是否处于可用状态。
 

10、编写客户端进行测试。在同样的包下建一个class叫Client

客户端的核心就是引用url。

源代码如下:

package webservice.axis.wsdd;
import javax.xml.namespace.QName;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

public class CopyOfClient {
	
		public static void main(String args[]){
			try{
				String serviceurl="http://localhost:8080/axis/services/HelloWorldWSDD";
				Service service=new Service();
				Call call=(Call)service.createCall();
				call.setTargetEndpointAddress(serviceurl);
				call.setOperationName(new QName(serviceurl,"hello"));
				String result=(String)call.invoke(new Object[]{"123456"});
				
				call.setOperationName(new QName(serviceurl,"add"));
				Float returnValue=(Float)call.invoke(new Object[]{new Float(3.2),new Float(2.8)});
				System.out.println("float return value is:"+returnValue);
				if(result!=null){
					System.out.println("result="+result);
				}else{
					System.out.println("result is null");
				}
				
			}catch(Exception ex){
				ex.printStackTrace();
			}
				

		}
		
		

}

运行结果是:float return value is:6

result is Hello123456,

下面对这两句重要的话进行解释:

  1. call.setOperationName(new QName(serviceurl,"hello"));  
  2.                 String result=(String)call.invoke(new Object[]{"123456"});  

1、QName里面接的hello是指方法名。

2、invoke里面接的123456是指方法的参数。

参考资料:

1、百度文库里面的:http://wendang.baidu.com/view/558a8f3143323968011c9279.html?from=rec&pos=3&weight=3&lastweight=2&count=5

2、新浪上的:http://blog.sina.com.cn/s/blog_4b9b442c0100rd87.html

3、ITEYE上的:http://hua04104.iteye.com/blog/850367

4、http://blog.sina.com.cn/s/blog_6307f1940100ohyh.html

猜你喜欢

转载自wandejun1012.iteye.com/blog/1207806