webservice视频教程 java 华为开发者空间
webservice视频教程 java 华为开发者空间
Table of
Web 是构建互联网分布式系统的基本部件,它是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。这就是说,别人能够用编程的方法通过Web来调用这个应用程序。
它通过标准通信协议,在互联网上以服务的方式发布有用的程序模块,目前大部分是用SOAP作为通信协议。
它提供一份详细的接口说明书,来帮助用户构建应用程序,这个接口说明书叫WSDL(Web服务描述语言,Web )。
请求报文和返回报文都是XML格式的,XML( )即可扩展标记语言,它与HTML一样,都是SGML( ,标准通用标记语言)。
一:的服务端发布 1:发布web程序服务端发布
创建 接口

创建接口实现类,实现业务逻辑

配置 web.xml 中 中 Xfire
提供对 xfire 的拦截

配置 配置
在 class 目录下建立 META-INF 目录,如(META-INF>xfire->.xml),在
.xml 文件中进行 服务的发布.

然后启动服务webservice视频教程 java,在浏览器中输入项目名称/就可以看到发布的接口了

2:本地发布
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;
/**
* Title: ServiceHello
* Description: 基于jdk1.6以上的javax.jws 发布webservice接口
@WebService - 它是一个注解,用在类上指定将此类发布成一个ws。
Endpoint – 此类为端点服务类,它的方法publish用于将一个已经添加了@WebService注解
对象绑定到一个地址的端口上。
* Version:1.0.0
* @author panchengming
*/
@WebService
public class JwsServiceHello {
/** 供客户端调用方法 该方法是非静态的,会被发布
* @param name 传入参数
* @return String 返回结果
* */
public String getValue(String name){
return "欢迎你! "+name;
}
/**
* 方法上加@WebMentod(exclude=true)后,此方法不被发布;
* @param name
* @return
*/
@WebMethod(exclude=true)
public String getHello(String name){
return "你好! "+name;
}
/** 静态方法不会被发布
* @param name
* @return
*/
public static String getString(String name){
return "再见!"+name;
}
//通过EndPoint(端点服务)发布一个WebService
public static void main(String[] args) {
/*参数:1,本地的服务地址;
2,提供服务的类;
*/
Endpoint.publish("http://192.168.1.105:8080/Service/ServiceHello", new JwsServiceHello());
System.out.println("发布成功!");
//发布成功后 在浏览器输入 http://192.168.1.105:8080/Service/ServiceHello?wsdl
}
}
二:客户端调用:1:本地生成代码,直接调用:
1:新建一个class类,用于调用。右键src,找到Web ,并输入wsdl地址,选择下载代码的路径;
(url: :8080//?wsdl)


2.将地址上的文件下载下来(注意和发布JDK一致);
3.写调用方法调用下载下来的中的java类中的方法;
示例:
import com.pcm.ws.jws.JwsServiceHello;
import com.pcm.ws.jws.JwsServiceHelloService;
/**
*
* Title: JwsClientHello
* Description: webService 客户端调用
* Version:1.0.0
* @author panchengming
*/

public class JwsClientHello {
public static void main(String[] args) {
//调用webservice
JwsServiceHello hello=new JwsServiceHelloService().getJwsServiceHelloPort();
String name=hello.getValue("panchengming");
System.out.println(name);
}
}
2、利用dos命令生成代码,和第一种基本一致
A、在工作空间创建用于存放使用命令生成的客户端代码的java工程
B、使用jdk提供的命令生成客户端代码

命令是jdk提供的,作用是根据使用说明书生成客户端代码,只支持SOAP1.1客户端的生成
常用参数
-d:默认参数webservice视频教程 java,用于生成.class文件
-s:生成.java文件
-p:指定生成java文件的包名,不指定则为WSDL说明书中值得倒写
C、在doc窗口进入java工程项目的src目录,执行命令

D、在中刷新java项目,将生成的客户端代码copy到客户端工程中

E、创建服务视图webservice视频教程 java 华为开发者空间,类名从标签的name属性获取
F、获取服务实现类,视图实例调用()方法,实现类的类名从的name属性获取

G、调用查询方法,方法名从下的标签的name属性获取

package com.webservice.client;
import com.webservice.jaxws.WeatherServiceImpl;
import com.webservice.jaxws.WeatherServiceImplService;
public class Client {
public static void main(String[] args) {
//创建视图
WeatherServiceImplService wsis = new WeatherServiceImplService();
//获取服务实现类
WeatherServiceImpl wsi = wsis.getPort(WeatherServiceImpl.class);
//调用查询方法
String weather = wsi.queryWeather("北京");
System.out.println(weather);
}
}

服务视图,的服务结点,它包括了服务端点
为每个服务端点定义消息格式和协议细节
服务端点,描述 web 可被执行的操作方法webservice视频教程 javawebservice视频教程 java 华为开发者空间,以及相关的消息,通过指向
定义一个操作(方法)的数据参数(可有多个参数)
定义 web 使用的全部数据类型
3:编程实现调用
注意:
(1)该种方式可以自定义关键元素,方便以后维护,是一种标准的开发方式;
(2)这种方式同样需要生成客户端代码,只不过仅需要将服务接口类引入即可,例如如果需要端口服务,则需要将生成的.class类引入;
(1)、开发步骤
A、生成客户端代码
B、使用类创建服务视图
C、获取服务实现类
D、调用查询方法
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import cn.itcast.mobile.MobileCodeWSSoap;
/**
*
* Title: ServiceClient.java
* Description:Service编程实现服务端调用
* 这种方式同样需要wsimport生成客户端代码,只不过仅需要将服务接口类引入即可,例如如果需要
*
* 端口服务,则需要将生成的MobileCodeWSSoap.class类引入
*/
public class ServiceClient {
public static void main(String[] args) throws IOException {
//创建WSDL地址,不是服务地址
URL url = new URL("http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl");
//创建服务名称
//1.namespaceURI - 命名空间地址 (wsdl文档中的targetNamespace)
//2.localPart - 服务视图名 (wsdl文档中服务名称,例如)
QName qname = new QName("http://WebXml.com.cn/", "MobileCodeWS");
//Service创建视图
//参数:
//1.wsdlDocumentLocation - 使用说明书地址
//2.serviceName - 服务名称
Service service = Service.create(url, qname);
//获取服务实现类
//参数解释:serviceEndpointInterface - 服务端口(wsdl文档中服务端口的name属性,例如)
MobileCodeWSSoap mobileCodeWSSoap = service.getPort(MobileCodeWSSoap.class);
//调用查询方法
String result = mobileCodeWSSoap.getMobileCodeInfo("188888888", "");
System.out.println(result);
}
}
4:利用的AXIS直接调用远程的web
public static void axis() {
Service service = new Service();
try {
Call call = (Call) service.createCall();
//设置地址
call.setTargetEndpointAddress("http://www.webxml.com.cn/WebServices/ValidateEmailWebService.asmx?wsdl");
call.setUseSOAPAction(true);
//域名加方法,//上面有写着targetNamespace="http://x.x.x/",这个就是你的命名空间值了;加方法名
call.setSOAPActionURI("http://WebXml.com.cn/" + "ValidateEmailAddress");
// 设置要调用哪个方法
call.setOperationName(new QName("http://WebXml.com.cn/", "ValidateEmailAddress")); // 设置要调用哪个方法
//设置参数名 :参数名 ,参数类型:String, 参数模式:'IN' or 'OUT'
call.addParameter(new QName("http://WebXml.com.cn/", "theEmail"), // 设置要传递的参数
org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
call.setEncodingStyle("UTF-8");
//返回类型
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);// (标准的类型)
// 调用方法并传递参数
String res = String.valueOf(call.invoke(new Object[]{"wangkanglu1024@163.com"}));
System.out.println(res);
} catch (Exception ex) {
ex.printStackTrace();
}
public static void axis2() throws MalformedURLException, SOAPException, ServiceException, RemoteException {
String endpoint = "http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl";
String res = null;
// 查询电话号码的接口方法名
String operationName = "getMobileCodeInfo";
// 定义service对象
Service service = new Service();
// 创建一个call对象
Call call = (Call) service.createCall();
// 设置目标地址,即webservice路径
call.setTargetEndpointAddress(endpoint);
// 设置操作名称,即方法名称 targetNamespace="http://WebXml.com.cn/"
call.setOperationName(new QName("http://WebXml.com.cn/", operationName));
// 设置方法参数
call.addParameter(new QName("http://WebXml.com.cn/", "mobileCode"),
org.apache.axis.encoding.XMLType.XSD_STRING,
javax.xml.rpc.ParameterMode.IN);
call.addParameter(new QName("http://WebXml.com.cn/", "userID"),
org.apache.axis.encoding.XMLType.XSD_STRING,
javax.xml.rpc.ParameterMode.IN);
// 设置返回值类型
//对于返回是字符串数组的返回类型只有这两种可行
//call.setReturnType(org.apache.axis.encoding.XMLType.SOAP_VECTOR);
call.setReturnClass(java.lang.String.class);
call.setUseSOAPAction(true);
call.setSOAPActionURI("http://WebXml.com.cn/" + "getMobileCodeInfo");
res = (String) call.invoke(new Object[]{"15611111111", "0"});
// 如果返回类型是org.apache.axis.encoding.XMLType.SOAP_VECTOR时用下面的转型接收
//Vector v=(Vector) call.invoke(new Object[]{cityCode,userId});
System.out.println(res);
}
5:调用方式
(1)、开发步骤
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299
资源库 - 资源分享下载网 » webservice视频教程 java 华为开发者空间
常见问题FAQ
- 关于资源售价和售后服务的说明?
- 代码有没有售后服务和技术支持?
- 有没有搭建服务?
- 链接地址失效了怎么办?
- 关于解压密码

