原生WebService
发布时间:2020-12-16 23:54:36 所属栏目:安全 来源:网络整理
导读:我使用的是jdk6自带的webservice,使用注解。 编写一个开放的借口并实现: public interface UserService { public String saveUser(String username,String password);} 实现类: import javax.jws.WebService;import javax.jws.soap.SOAPBinding;@WebServi
我使用的是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:UsersJhon(计算机的用户名)userwebservicecasclient下生成“.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。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |