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

webservice(一)简单的webservice实例

发布时间:2020-12-17 00:30:24 所属栏目:安全 来源:网络整理
导读:webservice基础知识 异构平台间的交互 java实现: JAX-WS 框架: CXF AXIS METRO jax方式生成新的接口和实现接口的类(用于存放在client端) -d?? ??? ?指定生成的目录 -keep?? ?指定是否生成源文件 -p?? ??? ?指定报名 -verbose显示生成详细过程 java:wsimp

webservice基础知识

异构平台间的交互


java实现:
JAX-WS
框架:
CXF
AXIS
METRO

jax方式生成新的接口和实现接口的类(用于存放在client端)
-d?? ??? ?指定生成的目录
-keep?? ?指定是否生成源文件
-p?? ??? ?指定报名
-verbose显示生成详细过程
java:wsimport -d D:sidworkspace_webservicewsimport -keep -verbose http://localhost:6666/ns?wsdl


SEI(Service EndPoint Interface)
SIB(Service implement Bean)


WSDL基础:

SOAP:Simple object access Protocol(协议)
SOAPMessage:

WSDL:(url后出现的)
types:用来定义访问的类型
message:SOAP
portType:指明接口名称(绑定in和out;operation:指定方法名称)
binding:指定传递消息所使用的格式(style:document和rpc)
service:指定服务所发布的基本信息

java EE视图:
可以查看web service Explorer
可以看到SOAP协议的发送与返回的xml

可以用tcpMon来捕获更清晰的xml
可以设置自己的监听端口,然后再用tcpmon来进行转发


实例:

package org.sid.service;

import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;

@WebService
public interface IMyService {
	@WebResult(name="addResult")
	public int add(@WebParam(name="a")int a,@WebParam(name="b")int b);

	@WebResult(name="minusResult")
	public int minus(@WebParam(name="a")int a,@WebParam(name="b")int b);

	@WebResult(name="login")
	public User login(@WebParam(name="username")String username,@WebParam(name="password")String password);
	
}
package org.sid.service;

import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;

@WebService(endpointInterface="org.sid.service.IMyService")
public class MyServiceImpl implements IMyService {

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

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

	@Override
	@WebResult(name = "login")
	public User login(@WebParam(name = "username") String username,@WebParam(name = "password") String password) {
		User user = new User();
		user.setUsername(username);
		user.setPassword(password);
		return user;
	}

}



package org.sid.service;

import javax.xml.ws.Endpoint;

public class MyServer {
	public static void main(String[] args) {
		String address = "http://localhost:6666/ns";
		Endpoint.publish(address,new MyServiceImpl());
	}
}


package org.sid.service;

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 {
            //创建访问的wsdl服务器地址url
            URL url = new URL("http://localhost:6666/ns?wsdl");
            //通过Qname致命服务的具体信息namespaceURI和localPart在http://localhost:6666/ns?wsdl中查找
            QName qname = new QName("http://service.sid.org/","MyServiceImplService");
            //创建服务
            Service service = Service.create(url,qname);
            //实现接口(依赖于接口了)
            IMyService ms = service.getPort(IMyService.class);
            ms.add(23,21);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
        
    }
}


wsimport之后,将生成的文件考入新的client项目中

使用如下客户端调用:

package org.sid.service;


public class TestClient2 {
	public static void main(String[] args) {
		MyServiceImplService msis = new MyServiceImplService();
		IMyService ms = msis.getMyServiceImplPort();
		ms.add(12,2);
	}
}

(编辑:李大同)

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

    推荐文章
      热点阅读