近期做cas 单点登录的时候由于要同步用户信息,所以准备在里面加个webservice,开放端口给子系统,于是想用jdk6自带的webservice,使用注解。
开发过程如下:
1,保证使用的是jdk6。
2,编写开放出来的接口并实现,如下
public interface UserService {
public String saveUser(String username,String password);
}
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.sql.DataSource;
import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;
@WebService(name = "UserService", serviceName = "UserService", targetNamespace = "http://cas.webservice.user/client")
@SOAPBinding(style = SOAPBinding.Style.RPC)
public class UserServiceImpl implements UserService {
private DataSource dataSource;
private SimpleJdbcTemplate jdbcTemplate;
private UserServiceImpl() {
}
private UserServiceImpl(DataSource dataSource) {
this.dataSource = dataSource;
this.jdbcTemplate = new SimpleJdbcTemplate(dataSource);
}
public String saveUser(String username, String password) {
int count = jdbcTemplate.update(
"insert userinfo(userName,password) values(?,?)", username,
password);
return username + " : " + password;
}
}
3,发布webservice。如下
Endpoint.publish("http://127.0.0.1:9527/UserService",
ctx.getBean("wsUserService"));
//注:这里假如不用spring的话 直接new UserServiceImpl()。
4,在你的客户端位置键入命令:
wsimport -keep http://127.0.0.1:9527/UserService?wsdl
此时会在此目录生成cas/webservice/user/client/此文件夹,里面生成了你需要的客户端调用类UserService,UserService_Service。
5,调用方式如下:
UserService_Service userService=new UserService_Service();
UserService user=userService.getUserServicePort();
System.out.println(user.saveUser("afei2","yes ido"));
。
注意的地方:
一是在发布的类(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。
权当记录用
By 阿飞哥 转载请说明
腾讯微博:
http://t.qq.com/duyunfeiRoom
新浪微博:
http://weibo.com/u/1766094735
分享到:
相关推荐
jdk6下开发webservice示例,JDK1.6 自带webservice构建,jdk6原生态webservice
纯jdk6实现的webservice,非常好用! 可以实现非常简单的发布方法和远程调用机制。
文档描述了通过jdk6开发webservice的例子 生成客户端代码的方法
jdk自动生成webservice 最简单的webservice
JDK1.6支持WebService dfdddddddddddddddddddddddd
通过这个实例可以简单了解webservice.实现的方法是用jdk自带的功能。 此份资料是在blogjava中找到的,供入门学习使用。
NULL 博文链接:https://caco.iteye.com/blog/433425
jdk webservice demo 这是个java工程,导入eclipse之后,把里面的jre换成你自己的就可以了。
Webservice入门教程_用JDK开发Webservice示例代码
NULL 博文链接:https://log-cd.iteye.com/blog/2237010
介绍了使用JDK、Eclipse搭建服务器端和客户端服务程序的基本过程,提供了服务器端和客户端应用测试程序。
JDK1.7版本使用 webService 需要添加两个额外 jar 包,否则会报错,需要将这两个 jar 包放到 jre/ext 目录下,同时配置jre/lib 下得 java.security 文件
WebService使用JDK发布
通过JDK+CXF结合开发一个简单的webservice学习案例,下载下来后需要自己修改发布的IP地址为自己的端口,然后发布,以及通过新的WSDL文件从新生成客户端代码才能实现客户端、服务端的交互
含服务器和客户端两个工程,服务启动,客户端可以正常访问
NULL 博文链接:https://quicker.iteye.com/blog/2323577
官网 jdk6,jdk7,jdk8,jdk9,jdk10 windox 32位、64位、linux 32位、64位 百度云。
windows64位jdk6、jdk7、jdk8安装包
JDK6u45JDK6u45JDK6u45JDK6u45JDK6u45JDK6u45JDK6u45JDK6u45JDK6u45