WebService之发布自己的WebService例子以及WSDL解析,Ajax访问WebService以及注解修改WSDL
2014-09-10 09:16
387 查看
基于应用层发布WebService服务
1: 创建业务逻辑类,并且添加@WebService注解, 通过: Endpoint.publish(地址, 端点)
注意: MyEclipse8,10自带JDK1.6版本发布WS会报错
发布的地址: http://IP地址/名称 WSDL地址: http://IP地址/名称?wsdl
2: 采用wsimport 解析WSDL文件. 格式如下:
wsimport http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?WSDL
wsimport -s . http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?WSDL
wsimport -s . -p a.b.c http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?WSDL
3: 哪些方法,可以 发布成WS服务的方法 只有public 修饰(非 final static)的方法,才可以被发布, 采用注解@WebMethod(exclude=true)
可以取消对public方法的发布
AJAX: 可以调用WS服务吗, 必须了解 WSDL 和 SOAP
无论是采用HttpClient 和Java代码调用、 WSDL浏览器访问, 传输的都是基于XML的SOAP格式,所以如果AJAX直接发送
SOAP格式则应该也可以访问远程WS服务
通过AJAX 发送SOAP格式,的确可以访问WS服务, 而且返回来的也是SOAP格式,但是此方法目前已经不推荐使用, 目前的浏览器很多都支持跨域请求(为了安全)
AJAX调用本地的Java Bean 即可
下面是一个简单发布自己WebService的例子:
接下来如何把自己发布的WebService如何通过wsimport命令到处java类,可以看博文/article/8943122.html
下面是
WSDL(WEB服务描述语言)的图片解析:
下面是Ajax访问WebService的例子:
注意的是先要通过wsimport到处WebService服务的java类:截图如下:
jsp页面:
写一个Servlet接受Ajax请求:
注解修改WSDL:
1: 创建业务逻辑类,并且添加@WebService注解, 通过: Endpoint.publish(地址, 端点)
注意: MyEclipse8,10自带JDK1.6版本发布WS会报错
发布的地址: http://IP地址/名称 WSDL地址: http://IP地址/名称?wsdl
2: 采用wsimport 解析WSDL文件. 格式如下:
wsimport http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?WSDL
wsimport -s . http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?WSDL
wsimport -s . -p a.b.c http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?WSDL
3: 哪些方法,可以 发布成WS服务的方法 只有public 修饰(非 final static)的方法,才可以被发布, 采用注解@WebMethod(exclude=true)
可以取消对public方法的发布
AJAX: 可以调用WS服务吗, 必须了解 WSDL 和 SOAP
无论是采用HttpClient 和Java代码调用、 WSDL浏览器访问, 传输的都是基于XML的SOAP格式,所以如果AJAX直接发送
SOAP格式则应该也可以访问远程WS服务
通过AJAX 发送SOAP格式,的确可以访问WS服务, 而且返回来的也是SOAP格式,但是此方法目前已经不推荐使用, 目前的浏览器很多都支持跨域请求(为了安全)
AJAX调用本地的Java Bean 即可
下面是一个简单发布自己WebService的例子:
package com.ws.demo; import javax.jws.WebService; import javax.xml.ws.Endpoint; /** 自己发布一个WS服务,给第三方客户端调用 * 1: 创建一个方法,然后给要发布的类添加@WebService * 2: 发布WebService */ @WebService public class MyWebService { public String showName(String name){ System.out.println("name:"+name); return "你好:"+name; } /** * 在main方法中发布自己的WebService * @param args */ public static void main(String[] args) { String address="http://127.0.0.1:8888/hello"; /** * jdk对Endpoint文档的说明: * 使用在此类中定义的静态方法创建端点。一个端点总是绑定到一个 Binding(http://127.0.0.1:8888/hello) 和一个实现者(new MyWebService()), * 这两项都是在创建端点时设置的。 * MyWebService 端点(也是WS实现类,类上面必须要有 @WebService */ Endpoint.publish(address,new MyWebService()); System.out.println(address+"?wsdl"); } }
接下来如何把自己发布的WebService如何通过wsimport命令到处java类,可以看博文/article/8943122.html
下面是
WSDL(WEB服务描述语言)的图片解析:
下面是Ajax访问WebService的例子:
注意的是先要通过wsimport到处WebService服务的java类:截图如下:
jsp页面:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title></title> <script type="text/javascript" src="js/jquery-1.3.js"></script> <script type="text/javascript"> $(function(){ //这是一种不常用的方法 $("#btn1").click(function(){ $.ajax({ type:"POST", url:"http://127.0.0.1:8888/hello",// 由于Webservice发布时是http://127.0.0.1:8888/hello,不可写成http://localhost:8888/hello data:"<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'"+ " xmlns:q0='http://demo.ws.com/' xmlns:xsd='http://www.w3.org/2001/XMLSchema' "+ "xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>"+ "<soapenv:Body>"+ "<q0:showName>"+ "<arg0>ddd</arg0>"+ "</q0:showName>"+ "</soapenv:Body>"+ "</soapenv:Envelope>", success:function(result){ alert($(result).find("return").text()); }, contentType:"text/xml;charset=UTF-8" }); }); //Ajax请求中常用的方法 $("#btn2").click(function(){ $.post("AjaxServlet",{ name:$("#key").val() },function(result){ alert(result); }); }); }); </script> </head> <body> <input type="button" value="跨域没有权限访问" id="btn1"/> <input type="button" value="Ajax访问WebService" id="btn2"/> <form method="post" action="127.0.0.1:7000" > 关键字<input type="text" name="key" id="key"><br/> <input type="submit" value="提交"> </form> </body> </html>
写一个Servlet接受Ajax请求:
package com.client.demo1; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class AjaxServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); String name=request.getParameter("name"); MyWebServiceService ms=new MyWebServiceService(); MyWebService ws= ms.getMyWebServicePort(); System.out.println(ws.showName(name)); response.getWriter().write(ws.showName(name)); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
注解修改WSDL:
package com.ws.demo1; import javax.jws.WebParam; import javax.jws.WebResult; import javax.jws.WebService; import javax.xml.ws.Endpoint; /** 自己发布一个WS服务,给第三方客户端调用 * 1: 创建一个方法,然后给要发布的类添加@WebService * 2: 发布WebService * 3、如果想要修改WS PORT 名称、参数 返回值的名称,则可以添加相应的注解 */ @WebService( name="MyWebService1", // 真正的服务类的名称, portName="MyWebServicePort1", // 端口名称 serviceName="MyWebServiceService1", // 服务名,默认是MyWebService+Service targetNamespace="a.b.c" // 指定解析存储类的包名 ) public class MyWebService { public @WebResult(name="result1") String showName(@WebParam(name="name1") String name){ System.out.println("name:"+name); return "你好:"+name; } /** * 在main方法中发布自己的WebService * @param args */ public static void main(String[] args) { String address="http://127.0.0.1:8888/hello"; /** * jdk对Endpoint文档的说明: * 使用在此类中定义的静态方法创建端点。一个端点总是绑定到一个 Binding(http://127.0.0.1:8888/hello) 和一个实现者(new MyWebService()), * 这两项都是在创建端点时设置的。 * MyWebService 端点(也是WS实现类,类上面必须要有 @WebService */ Endpoint.publish(address,new MyWebService()); System.out.println(address+"?wsdl"); } }
相关文章推荐
- 【WebService】wsdl配置详解以及使用注解修改wsdl配置
- WebService里的wsdl的详解以及使用注解修改wsdl的配置
- WebService里的wsdl的详解以及使用注解修改wsdl的配置
- WebService里的wsdl的详解以及使用注解修改wsdl的配置
- WebService里的wsdl的详解以及使用注解修改wsdl的配置
- WebService里的wsdl的详解以及使用注解修改wsdl的配置
- 【WebService】wsdl配置详解以及使用注解修改wsdl配置
- WebService里的wsdl的详解以及使用注解修改wsdl的配置
- WebService里的wsdl的详解以及使用注解修改wsdl的配置
- WebService里的wsdl的详解以及使用注解修改wsdl的配置
- WebService里的wsdl的详解以及使用注解修改wsdl的配置
- WebService里的wsdl的详解以及使用注解修改wsdl的配置
- WebService里的wsdl的详解以及使用注解修改wsdl的配置
- WebService里的wsdl的详解以及使用注解修改wsdl的配置
- Spring整合CXF 发布webservice接口服务器(普通及REST)和客户端,WSDL简单解析
- 以用户登录、注册、添加删除修改为例,解析jdbcTemplate使用方式以及spring注解实现CRUD
- WebService服务端、客户端编码,以及发布、访问
- 利用Eclipse开发WSDL类型的webservice以及发布过程
- 如何访问发布的webservice,并解析返回的非正常soap报文
- webservice--用注解修改WSDL内容