jdk6原生态webservice_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > jdk6原生态webservice

jdk6原生态webservice

 2011/10/10 8:06:08  haouziwefe  http://haouziwefe.iteye.com  我要评论(0)
  • 摘要:近期做cas单点登录的时候由于要同步用户信息,所以准备在里面加个webservice,开放端口给子系统,于是想用jdk6自带的webservice,使用注解。开发过程如下:1,保证使用的是jdk6。2,编写开放出来的接口并实现,如下publicinterfaceuserservice{publicstringsaveuser(stringusername,stringpassword);}importjavax.jws.webservice;importjavax.jws.soap
  • 标签:Web Service jdk Webservice
      近期做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。
   
   权当记录用  高手可以讨论讨论
  

   
  
   
 
发表评论
用户名: 匿名