加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

webservice的学习笔记(一)

发布时间:2020-12-16 23:42:52 所属栏目:安全 来源:网络整理
导读:一:webService :异构平台之间的交互。 CXF? Axis??? Metro? 框架??? java中的框架? jax-ws ?? 1.xml解析的方法有:(DTD,schame,? Stax) ??? 2.SOAP ??? 3.jax-ws(java? api? xml? webService) ???? 4.契约优先的开发模式: SEI (service?? Endpoint?? Int
一:webService :异构平台之间的交互。 CXF? Axis??? Metro? 框架??? java中的框架? jax-ws

?? 1.xml解析的方法有:(DTD,schame,? Stax)

??? 2.SOAP

??? 3.jax-ws(java? api? xml? webService)

???? 4.契约优先的开发模式:

SEI (service?? Endpoint?? Interface )?? SIB (Service??? implements??? Bean )

二:遇到的代码:

?1.简单的webservice项目:

?? 1):创建一个简单的接口。

????? ?

package webservice.test;

@WebService

public interface IMyservice {
?
?
??? public? int? add(int a,int b);
?
???? public? int? minus(int a,int b);

}



??? 2):创建实现类。

package webservice.test;

import javax.jws.WebService;

@WebService(endpointInterface="webservice.test.IMyservice")
public class IMyserviceImp implements? IMyservice{

?@Override
?public int add(int a,int b) {
? System.out.println(a+"+"+b+"="+(a+b));
? return a+b;
?}

?@Override
?public int minus(int a,int b) {
? System.out.println(a+"-"+b+"="+(a-b));
? return a-b;
?}
}





??? 3):创建服务.

package webservice.test;

import javax.xml.ws.Endpoint;


public class MyService {
?public static void main(String[] args) {

? String address="http://localhost:6666/ns";
???? Endpoint.publish(address,new IMyserviceImp());
?}
?
}


运行后访问网址:http://localhost:6666/ns?wsdl 然后会找到对应的提供xml


<?xml version="1.0" encoding="UTF-8"?>

<!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.6 in JDK 6. -->

<!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.6 in JDK 6. -->
-<definitions name="IMyserviceImpService" targetNamespace="http://test.webservice/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://test.webservice/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> -<types> +<xsd:schema> </types> -<message name="minus"> <part name="parameters" element="tns:minus"/> </message> -<message name="minusResponse"> <part name="parameters" element="tns:minusResponse"/> </message> -<message name="add"> <part name="parameters" element="tns:add"/> </message> -<message name="addResponse"> <part name="parameters" element="tns:addResponse"/> </message> -<portType name="IMyservice"> -<operation name="minus"> <input message="tns:minus"/> <output message="tns:minusResponse"/> </operation> -<operation name="add"> <input message="tns:add"/> <output message="tns:addResponse"/> </operation> </portType> -<binding name="IMyserviceImpPortBinding" type="tns:IMyservice"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> -<operation name="minus"> <soap:operation soapAction=""/> -<input> <soap:body use="literal"/> </input> -<output> <soap:body use="literal"/> </output> </operation> -<operation name="add"> <soap:operation soapAction=""/> -<input> <soap:body use="literal"/> </input> -<output> <soap:body use="literal"/> </output> </operation> </binding> -<service name="IMyserviceImpService"> -<port name="IMyserviceImpPort" binding="tns:IMyserviceImpPortBinding"> <soap:address location="http://localhost:6666/ns"/> </port> </service> </definitions>


4.创建一个客户端:
package webservice.test;

import java.net.MalformedURLException;
import java.net.URL;

import javax.xml.namespace.QName;
import javax.xml.ws.Service;

public class TestClient {
?? ?
?? ?public static void main(String[] args) {
?? ??? ?try {
?? ??? ??? ?URL?? url=new URL("http://localhost:6666/ns?wsdl");
?? ??? ??? ?QName? qname=new QName("http://test.webservice/","IMyserviceImpService");
?? ??? ??? ?Service?? service= Service.create(url,qname);
?? ??? ??? ?
?? ??? ??? ?IMyservice? ms=service.getPort(IMyservice.class);
?? ??? ??? ?System.out.println(ms.add(12,44));
?? ??? ??? ?
?? ??? ?} catch (MalformedURLException e) {
?? ??? ??? ?// TODO Auto-generated catch block
?? ??? ??? ?e.printStackTrace();
?? ??? ?}
?? ??? ?
?? ??? ?
?? ?}
这样就可以调用服务。


由于我们调用别人的接口,我们不知道他的实现类,所以我们应该用另一种方式:



二:wsimport?? 只要是JAva6版本以上都可以有这个命令。

可以通过的导出生成的接口:
?wsimport? -d? 目录名? -keep(指定是否生成源文件.java)? -verbose(详细信息过程)? 需要的wsdl服务
?

?会通过导出的文件,然后根据这些文件找到对应的类与接口,然后调用里面的方法。实现结果。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读