微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

原生WebService

我使用的是jdk6自带的webservice,使用注解。

编写一个开放的借口并实现:

public interface UserService {
    public String saveUser(String username,String password);
}

实现类:

import javax.jws.WebService;
import javax.jws.soap.soAPBinding;
@WebService(name = "UserService",serviceName = "UserService",targetNamespace = "http://cas.webservice.user/client")
@SOAPBinding(style = SOAPBinding.Style.RPC)
public class UserServiceImpl implements UserService{
;
                                                                                                                                 
    public String saveUser(String username,String password) {
        System.out.println(username+" : "+password);
         return username + " : " + password;
                                                                                                                                      
    }
}

@是注解,必须要有,下面会用到注解里面的东西。

webservice的发布:

public class TestMain {
    public static void main(String[] args) {   
        Endpoint.publish("http://127.0.0.1:9527/UserService",new UserServiceImpl());
    }
}

其中9527端口后面的UserService是注释中serviceName的内容

然后,运行一下main方法

在你的桌面开始位置输入cmd命令,输入如下内容

wsimport -keep http://127.0.0.1:9527/UserService?wsdl

会在C:\Users\Jhon(计算机的用户名)\user\webservice\cas\client下生成“.class和.java”的文件

重新建立一个工程,把cas下的client文件夹复制到新工程的src下,新建一个测试类,代码如下:

public class TestMain {
    public static void main(String[] args) {
        UserService_Service uss=new UserService_Service();
        UserService user=uss.getUserServicePort();
        System.out.println(user.saveUser("你好","yes i do"));
        }
}

会在控制台输出:你好 yes i do

注意的地方:
一是在发布的类(userServiceImpl)中假如带有接口属性,并且有其getter/setter,那么发布会失败。 二是发布的ip假如是127.0.0.1的话localhost是不能访问的,是多少就是多少,不过实际项目也不会这样的。 三是有的客户端调用的时候也会报错,比如Provider com.sun.xml.ws.spi.ProviderImpl not found这个异常,我跟踪代码进去,发觉报错的那个jdk版本的Provider和我成功的jdk版本是不一样的,在网上搜无答案,直说缺包,我感觉是个小bug。其他的没什么问题。 四是因为这里没用任何webservice框架,没有把它嵌入tomcat(假如你需要在tomcat环境中),所以端口另开,不能是8080。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐