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!

posted on 2014-07-20 18:44  hukailee  阅读(606)  评论(0编辑  收藏  举报