架构师之webservice-----------最快发布和调用webservice(分客户端和服务端)

本文介绍了一种使用JDK发布WebService的方法,通过示例代码详细展示了服务器端与客户端的实现过程,并提供了调用步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[color=blue][b]1.前言.[/b][/color]
以前只写过tomcat发布webservice,这个有点麻烦,最快最优雅的发布是直接用jdk来,这样比较能解耦.客户端也是一样.
[color=blue][b]2.直接代码.[/b][/color]
服务器:

package com.whaty.platform.ws.client;

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

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

import com.whaty.platform.ws.server.IMyservice;

/**
* @className:MyClient.java
* @Desc:访问发布的服务
* @author:lizhuang
* @createTime:2012-12-21 上午01:23:57
*/
public class MyClient {
public static void main(String[] args) {

try {
//服务WSDL Document的地址
URL url = new URL("http://localhost:7777/tudou?wsdl");
//Qnameqname是qualified name 的简写
//2.构成:由名字空间(namespace)前缀(prefix)以及冒号(:),还有一个元素名称构成
//由发布的wsdl可知namespace为http://server.ws.platform.whaty.com/,
QName qname=new QName("http://server.ws.platform.whaty.com/","MyServiceImplService");
Service service=Service.create(url, qname);
IMyservice ms=service.getPort(IMyservice.class);
ms.add(1, 4);
ms.minus(1, 4);
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}


package com.whaty.platform.ws.server;

import javax.jws.WebService;

/**
* @className:IMyservice.java
* @Desc:定义:SEI service endpoint interface
* @author:lizhuang
* @createTime:2012-12-21 上午12:57:18
*/
//JAX-WS注解,表示java api xml for webservice。JDK自带API的XML格式的webservice
@WebService
public interface IMyservice {

int add(int a, int b);

int minus(int a, int b);
}





package com.whaty.platform.ws.server;

import javax.xml.ws.Endpoint;

/**
* @className:MyServer.java
* @Desc:发布服务
* @author:lizhuang
* @createTime:2012-12-21 上午01:02:39
*/
public class MyServer {
public static void main(String[] args) {
//访问方式:http://localhost:7777/tudou?wsdl
String address="http://localhost:7777/tudou";
Endpoint.publish(address, new MyServiceImpl());
}
}



package com.whaty.platform.ws.server; //endpointInterface指定接入点接口:接口必须存在
import javax.jws.WebService;
@WebService(endpointInterface="com.whaty.platform.ws.server.IMyservice")
public class MyServiceImpl implements IMyservice {

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

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

}


客户端(需要自动先生成客户端文件,这个看3所述.

package Test;
import com.whaty.platform.ws.server.IMyservice;
import com.whaty.platform.ws.server.MyServiceImplService;

public class MyClient2 {
public static void main(String[] args) {
MyServiceImplService myServiceImplService=new MyServiceImplService();
IMyservice msis= myServiceImplService.getMyServiceImplPort();
msis.add(1, 4);
msis.minus(1, 4);
}
}


[color=blue][b]3.如何调用?[/b][/color]
(1)WebserviceZhujie工程直接ctrl+f12运行MyServer的main方法,则发布server.

(2)[url]http://localhost:7777/tudou?wsdl[/url]则可以验证是否发布成功.
(3)调用java自带的webservice客户端生成工具.
cmd进入电脑的dos输入框

cd %JAVA_HOME%


cd bin


wsimport -d d: -keep -verbose http://localhost:7777/tudou?wsdl

这样就在d盘生成了com为主目录的文件.
(3)把d盘com下文件都copy到eclipse的src里面,并执行MyClient2的main方法,ok!
[color=blue][b]4.运行中执行了一个加法程序,显示结果为:[/b][/color]

a+b=5
a-b=-3


本文主要参考csdn的大牛yaerfeng的原创,再次对原创致敬!
参考连接:
http://blog.youkuaiyun.com/yaerfeng/article/details/8352307
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值