如何利用Tomcat部署WebService进行客户端开发

上传人:guoc****ang 文档编号:52779590 上传时间:2022-02-09 格式:DOC 页数:18 大小:808.50KB
返回 下载 相关 举报
如何利用Tomcat部署WebService进行客户端开发_第1页
第1页 / 共18页
如何利用Tomcat部署WebService进行客户端开发_第2页
第2页 / 共18页
如何利用Tomcat部署WebService进行客户端开发_第3页
第3页 / 共18页
点击查看更多>>
资源描述
如何利用Tomcat部署Web Service服务进行客户端开发环境的准备: 下载jaxws-ri-2.2.5包。一、 开发并发布Web Service在这里是通过jax在tomcat部署并发布Web Service的,当然发布Web Service还有其他的方法,在这里有兴趣的读者可以深入研究,这里不再多做阐述。我们先发布一个简单的Web Service,逐步的添加其他功能。首先从服务器端开始。1.1新建一个Web Service project/Web project, 在这里我新建的名字为SSHSystemWebService。接着新建包,包名为com.system.webservice。接着步入正题。开始编写我们的service。这里新建一个接口,取名叫MyUserService。在这个service中,打算提供用户登录、添加用户、删除用户、得到用户列表四个功能。编写MyUserService.java :package com.system.webservice;import java.util.List;import javax.jws.WebParam;import javax.jws.WebService;import com.system.entity.User;WebServicepublic interface MyUserService public void add(WebParam(name = user) User user); public void delete(WebParam(name = user) User user); public List list(); public User login(WebParam(name = username)String username, WebParam(name = password)String password);上面红色WebService是java自提供的注解,表示这是一个webService。WebParam(name = user)表示这个参数在wsdl中的名字是user,如果你没有指定,这个参数可能会是arg0等,为了让参数和我们本地服务器端的参数名统一起来,建议用这个WebParam注解。1.2 接着编写实现类新建一个实现类,这里取名叫: MyUserServiceImpl , 实现MyUserService接口MyUserServiceImpl.javapackage com.system.webservice;import java.util.List;import javax.jws.WebService;import com.system.dao.UserDao;import com.system.entity.User;WebService(endpointInterface = com.system.webservice.MyUserService,wsdlLocation=WEB-INF/META-INF/wsdl/service.wsdl,portName=UserServicePort,serviceName=UserService,targetNamespace=public class MyUserServiceImpl implements MyUserService public UserDao userDao = new UserDao();public UserDao getUserDao() return userDao;public void setUserDao(UserDao userDao) this.userDao = userDao;public User login(String username, String password) System.out.println(Service:Login(Method) is running!);return userDao.login(username, password);public void add(User user) System.out.println(Service:CreateUser(Method) is running!);userDao.createUser(user);public List list() System.out.println(Service:UserList(Method) is running!);return userDao.getUserList();public void delete(User user) System.out.println(Service:Delete(Method) is running!);userDao.deleteUser(user);上面红色WebService(endpointInterface com.system.webservice.MyUserService)暂时只需要这个注解参数,后面的注解在这里可以不理会。他的意思是这个WebService的接口是谁。在这里写上具体的包名和类名。1.3 现在一个简单的WebService已经写好,接着写发布类进行发布,测试是否成功。新建一个类,这里取名叫做MyServiceStartMyServiceStart.java:package com.system.webservice;import javax.xml.ws.Endpoint;public class MyServiceStart public static void main(String args) Endpoint.publish(http:/localhost:8688/ssh, new MyUserServiceImpl();Java中自带的封装类,进行WebService的发布。Publish中的第一个参数,是我们发布的url,就是由你指定通过哪个地址来访问你刚刚发布的服务。第二个参数是这个服务的具体实现类对象。接着,我们运行这个这个类,然后访问http:/localhost:8688/ssh地址,进行测试。如果出现能出现该页面,说明发布成功。可以通过该http:/localhost:8688/ssh?xsd=1地址查看具体的元素定义。OK,到此,一个简单的WebService发布成功。2 但是我们的目的远没有达到。我们希望把自己的WebService部署到类似Tomcat的服务器上,可以提供一个接口给开发人员。而不去关心这个调用这个接口所依赖的系统和开发语言。2.1 在这里,提供的用户登录、添加用户、删除用户、得到用户列表四个功能都将具体的依赖于数据库。所以第一步需要建立数据库。表名为user_login,并插入了三条数据。既然是Web Project,在这里就整用了Hebrinate进行数据库的操作。2.2 新建包,包名为com.system.entity. 新建一个实体类,叫做UserUser.class:package com.system.entity;public class User private int userId;private String username;private String password;public int getUserId() return userId;public void setUserId(int userId) this.userId = userId;public String getUsername() return username;public void setUsername(String username) this.username = username;public String getPassword() return password;public void setPassword(String password) this.password = password;public User() super();public User(int userId, String username, String password) super();this.userId = userId;this.username = username;this.password = password;User类有三个属性,username.password,userId.和数据库中的user_login表的列相对应。接着进行user.hbm.xml的编写: oracl_sequence 这里就不再对配置文件进行过多的阐述和说明了。编写hibernate.cfg.xml: oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:localhost:1521:ORCL scott orcl org.hibernate.dialect.OracleDialecttrue true 2.3 OK,到这一步,hibernate的基本配置都OK了。前提是你已经引入需要的jar包。接下来就是我们具体的实现了。也就是我们常说的dao层。新建包,包名为com.system.dao. 新建类,类名为UserDaoUserDao.class:package com.system.dao;import java.util.List;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.system.entity.User;public class UserDao extends HibernateDaoSupportpublic void createUser(User user) Session session = new Configuration().configure().buildSessionFactory().openSession();Transaction tran = session.beginTransaction();session.save(user);mit();session.close();public void deleteUser(User user)Session session = new Configuration().configure().buildSessionFactory().openSession();Transaction tran = session.beginTransaction();session.delete(user);mit();session.close();public User login(String username, String password)List users = this.getUserList();int size = users.size();User tempuser;for (int i = 0; i size; i+) tempuser = users.get(i);if(tempuser.getUsername().equals(username) &tempuser.getPassword().equals(password)return tempuser; return null;SuppressWarnings(unchecked)public List getUserList()String str = from User;Session session = new Configuration().configure().buildSessionFactory().openSession();Query query = session.createQuery(str);List users = query.list();session.close();return users;准确的说,基本的hibernate配置都已经好了,我们编写测试类进行测试。引入Junit 需要的jar包。 这里我就不贴代码了,我的测试结果OK,可以自行测试。同样的,进行运行MyServiceStart类,进行发布。测试加入Hibernate框架后的service能够正常运行。可以通过MyEcplise快捷方便的进行访问。输入url,点击GO。可以输入参数,运行提供的服务,接着查看结果。为了简洁,这块可以自己去操作,这里也不再一步一步的贴上操作截图了。2.3 到了最重要的一步了。部署到Tomcat中。在该Web Project 中的WebRoot/WEB-INF新建文件夹META-INF,再在该新建文件夹下新建wsdl文件夹。接着在wsl文件夹下新建service.wsdl。最后的目录结构如下:编写service.wsdl,可以通过访问http:/localhost:8688/ssh?wsdl得到wsdl。可以拷贝一些固定格式的一些配置。然后在我们访问得到的wsdl中,具体的元素定义是在http:/localhost:8688/ssh?xsd=1 中的,为了程序的移植性考虑,这里新建一个service.xsd存放元素定义。最终service.xsd:xsd:schema xmlns:tns=xmlns:xsd=http:/www.w3.org/2001/XMLSchema elementFormDefault=qualifiedtargetNamespace=因为在上次的培训过程中,我已经讲过这些配置文件中的各个含义。这里就直接贴上代码了。service.wsdl:wsdl:definitions xmlns:soap=http:/schemas.xmlsoap.org/wsdl/soap/ xmlns:tns= xmlns:wsdl=http:/schemas.xmlsoap.org/wsdl/ xmlns:xsd=http:/www.w3.org/2001/XMLSchema name=UserService targetNamespace= xsd:schema targetNamespace= !- - 这里把需要注意的地方都用红色字体给标记出来了。第一个是名空间,这里建议去拷贝访问发布service的发布地址中的名空间,其实是包名的反转。第二个是名字,需要和下面这个service:name一定是一样的。然后是发布的地址,因为我们不需要手动去运行MyServiceStart类进行发布。直接在这里配置就OK。WebService(endpointInterface = com.system.webservice.MyUserService,wsdlLocation=WEB-INF/META-INF/wsdl/service.wsdl,portName=UserServicePort,serviceName=UserService,targetNamespace=在上面的步骤中,只为这个实现类配置了具体的定义接口,这里加上上面的注解配置。他参考的是上面service.wsdl中的配置。3 要想发布到tomcat,我们需要依赖某些框架,需要导入jar包。在这里用JAX-RI,导入需要的jar包,所需包已经上传到服务器。在WEB-INF下新建sun-jaxws.xml, 这里注意,名字不能错。编辑sun-jaxws.xml:第一参数为UserService,这里设置成和前面的一样,因为这个名字等下的web.xml中会依赖于他。第二个参数为实现类,第三个参数表示我通过tomcat发布出去,通过哪个url来进行访问。配置web.xml:web-app version=2.5 xmlns=xmlns:xsi=http:/www.w3.org/2001/XMLSchema-instancexsi:schemaLocation= index.jspcom.sun.xml.ws.transport.http.servlet.WSServletContextListenerUserServicecom.sun.xml.ws.transport.http.servlet.WSServletUserService/ms需要注意,这些配置依赖于上面的sun-jaxws.xml。到此基本的配置都OK,我们进行测试。部署到tomcat,启动tomcat。在浏览器中输入http:/localhost:8080/SSHSystemWebService/ms?wsdl 地址,如果出现如下页面说明整个的部署过程是OK的。至此,hibernage+oracl 并部署到tomcat中的webservice发布成功。在这里想用spring来继续整合的,由于在整合过程中出现了一点小问题,基于时间和效率的考虑,在这里就先写到hibernate的这个版本,整合好spring会更新。二、 客户端的开发。经过上面服务器端的开发、发布,我们可以通过它发布出来的接口函数进行调用编程,实现我们想要的效果。1. 新建一个Web Project, 这里取名叫做SSH_LoginSystemWebClient首先我们把发布的service,给生成到我们本地来。这样我们才方便的进行编程,才直观的知道有哪些个类,哪些个方法。Windows cmd .打开cmd窗口。在这里解释下这个命令。Wsimport导出wsdl文件为java文件。-d 表示指定存放到指定目录。这里是E:/TempFile。 -keep表示保存生成的文件。接下来是指定的wsdl文件或是url。OK,接下来到E:/TempFile目录,会发现生成了一些java文件和.class文件。其实这个生成的路径就是我们在service.wsdl中配置的名空间,就是服务器包名。把整个类似包的文件夹拷贝到src目录下。2. 接下来就是我们常规的Web开发了。我们生成的文件就相当于hibernate的工作都在服务器端完成了。这里为了简单,也仅仅是用来struts2进行开发。新建包,包名叫com.client.action。新建类UserAction。UserAction.class:package com.client.action;import com.client.base.BaseAction;import com.system.webservice.MyUserService;import com.system.webservice.User;import com.system.webservice.UserService;public class UserAction extends BaseActionprivate static final long serialVersionUID = 1L;private User user;private MyUserService port;private UserService userService;public String login()userService = new UserService();port = userService.getUserServicePort();User loginUser = null;loginUser = port.login(user.getUsername(), user.getPassword();if(loginUser = null)return ERROR;return SUCCESS;public User getUser() return user;public void setUser(User user) this.user = user;这个可以查看UserService.java的具体类,是因为在wsdl配置文件中叫的UserService,所以生成的也是UserService.java了。首先new这么一个UserService的实例出来。表示我需要用到这个UserService,通过这个UserService可以得到具体的MyUserService实现类。通过这个MyUserService实现类就可以调用service发布出来的接口函数了。完成和理解上面的步骤,加上正常的web开发流程,比如说配置好web,xml,引入jar包,配置struts.xml文件,编写.jsp等,在这里不过多阐述,和正常开发流程是一样的。最后,可以写登录测试页面,发现service正常工作,会调用service服务器端的函数和数据库,实现了service的功能。在这里只是一个简单的例子,抛砖引玉的作用。我会把我的整个文件通过SVN上传到服务器,可以方便参考。- 2012年11月26日
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 营销创新


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!