`
nannan408
  • 浏览: 1783799 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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

 
阅读更多
1.前言.
  以前只写过tomcat发布webservice,这个有点麻烦,最快最优雅的发布是直接用jdk来,这样比较能解耦.客户端也是一样.
2.直接代码.
服务器:
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);  
    }  
}  


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

(2)http://localhost:7777/tudou?wsdl则可以验证是否发布成功.
(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!
4.运行中执行了一个加法程序,显示结果为:
a+b=5
a-b=-3


本文主要参考csdn的大牛yaerfeng的原创,再次对原创致敬!
参考连接:
http://blog.csdn.net/yaerfeng/article/details/8352307

0
1
分享到:
评论
2 楼 nannan408 2015-01-29  
  webservice作为一种协议,在报文和跨平台上不会过时的.restful和Thrift一类框架结合才有前途 .
1 楼 shmily2038 2015-01-27  
现在都搞Restful了,webservice有些过时了,新系统都拥抱restful了。  请加入214323823,一起探讨Rest

相关推荐

    通向架构师的道路(第十一天)之Axis2_Web_Service(二)

    在“通向架构师的道路(第十一天)之Axis2_Web_Service(二)”的主题中,我们继续探讨如何使用Axis2框架构建和使用Web服务。在前一天的讲解中,我们了解了如何生成一个基于Axis2的WebService,以及四种不同的客户端调用...

    ios移动社交app的客户端+webservice服务器端源码

    本资源提供的"ios移动社交app的客户端+webservice服务器端源码"正是一个完整的解决方案,涵盖了用户交互、数据交换以及服务端处理的核心部分。下面我们将深入探讨其中涉及的关键知识点。 1. **iOS客户端开发**: ...

    用WebService实现对数据库进行操作(添加+删除+修改)

    这种方式不仅简化了客户端与服务端之间的交互,同时也提高了系统的灵活性和可扩展性。需要注意的是,在实际应用中还需考虑异常处理、安全性等方面的问题,以确保系统的稳定运行。 - **异常处理**:在处理数据库操作...

    通向架构师的道路(第十天)之Axis2 Web Service(一).docx

    Axis2 Web服务架构师之路 Axis2 是一个基于 JAVA 语言的最新的 SOAP 规范(SOAP 1.2)和 SOAP with Attachments 规范(来自 Apache Group)的开放源代码实现。Axis2 框架来自 Apache 开放源代码组织,具有灵活的...

    通向架构师的道路(第十二天)之Axis2 Web Service(三).docx

    【标题】:“通向架构师的道路(第十二天)之Axis2 Web Service(三)” 【描述】:本文档是通往架构师学习路径的一部分,主要关注Axis2框架下的Web Service开发,尤其是关于SOAP特性的应用。 【标签】:Axis2 ...

    架构师面试题系列之Dubbo面试专题及答案(29题).docx

    - **Cluster**:提供透明的远程过程调用,支持多协议、负载均衡、容错和地址路由。 - **Registry**:实现服务注册和发现,使得服务消费方能动态查找服务提供方,实现服务地址透明。 以上是对Dubbo面试中常见问题...

    分析师考试复习资料(精简整理版).

    本文档提供了系统分析师考试所需的关键知识点概览,涵盖了开发技术、WebService 技术、软件工程与软件架构等多个方面。对于准备参加系统分析师考试的人来说,理解这些核心概念和技术是非常重要的。此外,掌握相关的...

    Web_Service开发

    - **UDDI (Universal Description, Discovery, and Integration)**:一种用于发布、查找和集成Web服务的标准。UDDI提供了一个目录服务,使得Web服务可以被发现和调用。 3. **特点**: - **平台独立性**:Web ...

    Web Service的Java EE规范1.2中文版

    - **架构师**:对于负责系统整体架构的架构师来说,了解本规范有助于更好地规划系统的集成方案和技术选型。 - **技术经理**:技术经理可以通过本规范了解最新的技术趋势和发展方向,从而做出更为明智的决策。 #### ...

    JAVA技术体系

    - **Socket编程**:掌握TCP/IP协议,实现客户端和服务端之间的通信。 - **NIO**:学习如何使用NIO进行非阻塞式网络编程。 - **RMI与CORBA**:理解远程方法调用(RMI)和公共对象请求代理体系(CORBA)用于分布式系统中的...

    哈尔滨工程大学 软件开发及过程管理大作业

    - **错误选项分析:** 在给出的选择题中,选项C描述了“帮助架构师更好地捕获和细化系统需求”,这一描述不完全准确,因为捕获和细化需求更多是在架构设计之前的阶段完成的。 **二、“4+1”视图模型** 1. **视图...

Global site tag (gtag.js) - Google Analytics