简介
cmd->wsimport -keep -d 存放class文件的路径 -s 存放Java文件的路径 -p 类的包名 具体的WSDL地址
发布WebService
注解的方式
package com.webservice;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;
/**
* WebService
* 将 Java 类标记为实现 Web Service,或者将 Java 接口标记为定义 Web Service 接口
*/
@WebService(serviceName="MyService",targetNamespace="http://www.baidu.com")
public class HelloService implements IHelloService{
@WebMethod(operationName="AliassayHello")//默认为SayHello
@WebResult(name="myReturn")//默认为 return
//@WebParam 默认为 arg0,arg1
public String sayHello(@WebParam(name="myname") String name){
return "hello: " + name;
}
public String sayGoodbye(String name){
return "goodbye: " + name;
}
@WebMethod(exclude=true)//当前方法不被发布出去, 默认为 false
public String sayHello2(String name){
return "hello " + name;
}
public static void main(String[] args) {
/**
* 参数1:服务的发布地址
* 参数2:服务的实现者
* Endpoint 会重新启动一个线程
*/
Endpoint.publish("http://localhost:8088/test", new HelloService());
System.out.println("Server ready...");
}
}
用wsdd(Web Services Deployment Descriptor)发布 Webservice
客户端访问
1.wsimport 自动生成客户端代码,通过代理的模式实现访问
2.通过URL直接发送SOAP报文访问(Java 应用程序,jsp+ajax)
示例源码
基于注解方式发布的Webservice的具体实现
WSDD形式的Webservice的具体实现
常见问题
1.Eclipse 的Webservice Explorer 打不开,报500错误的原因,把jre8改成jre7就可以解决了。
2.Java应用程序通过 HttpURLConnection访问网址,因为服务器的安全设置不接受Java程序作为客户端访问,解决方案是设置客户端的User Agent,要手工设置安全性
conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
3.项目要设置WEB.XM中的的servlet,否则会报错;