Java利用webservice创建接口案例源码

环境要求:

JDK1.7,并配置Java的环境变量

BaseDao  接口:

/**
 * 要使得成为一个可供访问的接口,必须添加:@WebService
 * */

@WebService
public interface BaseDao {
    //添加一个加法的接口
    
    @WebResult(name="addddddre")
    public int add(@WebParam(name="add01")int a,@WebParam(name="add02")int b);
    
    public String t(String a,String b);
    
    public User login(String usename,String password);
    
}

BaseDaoImpl:

/**
 * endpointInterface  是接入点的配置(提供给访问者,访问哪里)
 * */
@WebService(endpointInterface="com.sram.dao.BaseDao")
public class BaseDaoImpl implements BaseDao{

@Override
    public int add(int a, int b) {
        // TODO Auto-generated method stub
        System.out.println("a+b的和为"+(a+b));
        return a+b;
    }

@Override
    public String t(String a, String b) {
        // TODO Auto-generated method stub
        return a+b;
    }

@Override
    public User login(String username, String password) {
        // TODO Auto-generated method stub
        System.out.println("username"+username+","+"password"+password);
        return new User(username,password);
    }

}

添加接口服务:

MyServer.java

public class MyServer {
    public static void main(String[] args) {
        //添加服务,确定在网上发布的地址
        String url="http://localhost:8888/sram";
        //发布接口
        Endpoint.publish(url, new BaseDaoImpl());    
    }
}

MyClient:客户端访问接口:

/**
 * 定义访问的客户端:
 * */
public class MyClient {
    public static void main(String[] args) {
        URL url;
        
        try {
            url = new URL("http://localhost:8888/sram?wsdl");
            QName qname = new QName("http://impl.dao.sram.com/","BaseDaoImplService");
            //根据服务的名称创建service
            Service service = Service.create(url,qname);
            //获取接口
            BaseDao dao = service.getPort(BaseDao.class);
            //通过wsdl转换成Java对象。没有依赖Java程序,但依赖Java接口。
            System.out.println(dao.add(3, 5));
            /**
             * 成功调用服务端的接口,实现功能,但是有问题。
             * 
             * 1,服务商不可能把接口名提供给你。
             * 
             * 2,如果服务器系统使用.NET开发没有接口。所以,咱们写的
             * 客户端不应该依赖服务器平台。
             * */
            
            System.out.println(dao.t("test1", "test2"));
            
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

注意:第一种访问依赖接口BaseDao,不推荐:

方式2:

利用wsimport生成不依赖平台的客户端访问类。
具体办法:打开控制台,在控制台端生成访问文件(前提:需要配置Java的环境变量)

-d 指明生成的目录
-keep 保留Java代码
-verboss 输出生成详细信息

d:/test 为生成代码的地址

生成客户端访问服务器接口的代码:
wsimport -d d:/test -keep -verbose http://localhost:8888/sram?wsdl

生成之后,将其拷贝到访问项目中,再次利用MyClient类,将BaseDao导入地址改为生成文件中的接口的地址。

再次访问,OK!

Java利用webservice创建接口案例源码

时间: 2024-10-16 14:58:14

Java利用webservice创建接口案例源码的相关文章

使用jqplot创建报表(一) 初学后写的第一个案例源码

一.初学后写的第一个案例源码 效果图: 代码如下: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ include file="common.jsp"%> <html> <head> <script type="text/javascript" src=&q

java实现 swing模仿金山打字 案例源码

java实现 swing模仿金山打字 案例源码,更多Java技术就去Java教程网.http://java.662p.com 代码: <font size="3">import Java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Image; import java.awt.Toolkit; import java.io.File; import java.io.IO

【Java】【Flume】Flume-NG源码阅读之AvroSink

org.apache.flume.sink.AvroSink是用来通过网络来传输数据的,可以将event发送到RPC服务器(比如AvroSource),使用AvroSink和AvroSource可以组成分层结构.它继承自AbstractRpcSink  extends AbstractSink implements Configurable这跟其他的sink一样都得extends AbstractSink implements Configurable,所以重点也在confgure.start.

java基础进阶篇(七)_LinkedHashMap------【java源码栈】

目录 一.概述 二.特点 三.应用场合 四.构造方法 1.参数为空 2.accessOrder 五.源码结构分析 六.常见问题 1.如何实现的元素有序? 2.如何保证顺序的正确以及同步 3.如何实现两种顺序(插入顺序或者访问顺序)? 4.为什么重写containsValue()而不重写containsKey()? 七.常用方法 一.概述 ??LinkedHashMap是HashMap的子类,关于HashMap可以看下前面的章节:java基础进阶篇 HashMap public class Lin

【Java】【Fulme】Flume-NG源码阅读之SpoolDirectorySource

org.apache.flume.source.SpoolDirectorySource是flume的一个常用的source,这个源支持从磁盘中某文件夹获取文件数据.不同于其他异步源,这个源能够避免重启或者发送失败后数据丢失.flume可以监控文件夹,当出现新文件时会读取该文件并获取数据.当一个给定的文件被全部读入到通道中时,该文件会被重命名以标志已经完成.同时,该源需要一个清理进程来定期移除完成的文件. 通道可选地将一个完成路径的原始文件插入到每个事件的hearder域中.在读取文件时,sou

转:微信开发之使用java获取签名signature(贴源码,附工程)

微信开发之使用java获取签名signature(贴源码,附工程) 标签: 微信signature获取签名 2015-12-29 22:15 6954人阅读 评论(3) 收藏 举报  分类: 微信开发(5)  版权声明:本文为博主原创文章,转载注明出处http://blog.csdn.net/u013142781 目录(?)[+] 一.前言 微信接口调用验证最终需要用到的三个参数noncestr.timestamp.signature: 接下来将会给出获取这三个参数的详细代码 本文的环境ecli

Openstack liberty 创建实例快照源码分析1

Openstack liberty中也支持对云主机执行快照,快照是备份系统中一种常用的数据保护技术,在生产系统故障后,能通过快照将系统快速恢复到快照时间点:那Openstack中的云主机快照是否也支持这种故障恢复呢?请看下文: Openstack支持对处于运行或者停止状态的云主机执行快照,另外Openstack既可以从镜像启动云主机,也可以从启动磁盘启动云主机,根据条件组合,可以执行下面4中快照: 镜像启动云主机的离线快照 镜像启动云主机的在线快照 磁盘启动云主机的离线快照 磁盘启动云主机的在线

java中用jsoup抓取网页源码,并批量下载图片

一.导入jsoup的核心jar包jsoup-xxx.jar jar包下载地址:jsoup-1.8.2.jar 中文API地址:http://www.open-open.com/jsoup/parsing-a-document.htm 二.java中用jsoup抓取网页源码,并批量下载图片 package com.dgh.test; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; i

spring-beans中Aware相关接口的源码解析说明

spring版本为5.0.11 Aware是个没有定义任何方法的接口,即标记超接口,拥有众多子接口,在spring源码中有多处都在使用这些子接口完成各种场景下的回调操作. aware字面意思翻译过来是知道的,感知的,所以理解为感知所有aware前面的含义. beanNameAware接口(不建议使用):如果某个bean需要访问配置文件中本身bean的id属性,这个Bean类通过实现该接口,在依赖关系确定之后,初始化方法之前,提供回调自身的能力,从而获得本身bean的id属性,该接口提供了void