如何利用Tomcat部署WebService进行客户端开发.docx
- 文档编号:17221841
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:26
- 大小:620.13KB
如何利用Tomcat部署WebService进行客户端开发.docx
《如何利用Tomcat部署WebService进行客户端开发.docx》由会员分享,可在线阅读,更多相关《如何利用Tomcat部署WebService进行客户端开发.docx(26页珍藏版)》请在冰豆网上搜索。
如何利用Tomcat部署WebService进行客户端开发
如何利用Tomcat部署WebService服务进行客户端开发
环境的准备:
下载jaxws-ri-2.2.5包。
一、开发并发布WebService
在这里是通过jax在tomcat部署并发布WebService的,当然发布WebService还有其他
的方法,在这里有兴趣的读者可以深入研究,这里不再多做阐述。
我们先发布一个简单的WebService,逐步的添加其他功能。
首先从服务器端开始。
1.1
新建一个WebServiceproject/Webproject,
在这里我新建的名字为SSHSystemWebService。
接着新建包,包名为com.system.webservice。
接着步入正题。
开始编写我们的service。
这里新建一个接口,取名叫MyUserService。
在这个service中,打算提供用户登录、添加用户、删除用户、得到用户列表四个功能。
编写MyUserService.java:
packagecom.system.webservice;
importjava.util.List;
importjavax.jws.WebParam;
importjavax.jws.WebService;
importcom.system.entity.User;
@WebService
publicinterfaceMyUserService{
publicvoidadd(@WebParam(name="user")Useruser);
publicvoiddelete(@WebParam(name="user")Useruser);
publicList
publicUserlogin(@WebParam(name="username")Stringusername,
@WebParam(name="password")Stringpassword);
}
上面红色@WebService是java自提供的注解,表示这是一个webService。
@WebParam(name="user")表示这个参数在wsdl中的名字是user,如果你没有指定,这个参数可能会是arg0等,为了让参数和我们本地服务器端的参数名统一起来,建议用这个@WebParam注解。
1.2接着编写实现类
新建一个实现类,这里取名叫:
MyUserServiceImpl,实现MyUserService接口
MyUserServiceImpl.java
packagecom.system.webservice;
importjava.util.List;
importjavax.jws.WebService;
importcom.system.dao.UserDao;
importcom.system.entity.User;
@WebService(endpointInterface="com.system.webservice.MyUserService",
wsdlLocation="WEB-INF/META-INF/wsdl/service.wsdl",
portName="UserServicePort",
serviceName="UserService",
targetNamespace="
publicclassMyUserServiceImplimplementsMyUserService{
publicUserDaouserDao=newUserDao();
publicUserDaogetUserDao(){
returnuserDao;
}
publicvoidsetUserDao(UserDaouserDao){
this.userDao=userDao;
}
publicUserlogin(Stringusername,Stringpassword){
System.out.println("[Service:
]Login(Method)isrunning@!
");
returnuserDao.login(username,password);
}
publicvoidadd(Useruser){
System.out.println("[Service:
]CreateUser(Method)isrunning@!
");
userDao.createUser(user);
}
publicList
System.out.println("[Service:
]UserList(Method)isrunning@!
");
returnuserDao.getUserList();
}
publicvoiddelete(Useruser){
System.out.println("[Service:
]Delete(Method)isrunning@!
");
userDao.deleteUser(user);
}
}
上面红色@WebService(endpointInterface"com.system.webservice.MyUserService")
暂时只需要这个注解参数,后面的注解在这里可以不理会。
他的意思是这个WebService的接口是谁。
在这里写上具体的包名和类名。
1.3现在一个简单的WebService已经写好,接着写发布类进行发布,测试是否成功。
新建一个类,这里取名叫做MyServiceStart
MyServiceStart.java:
packagecom.system.webservice;
importjavax.xml.ws.Endpoint;
publicclassMyServiceStart{
publicstaticvoidmain(String[]args){
Endpoint.publish("http:
//localhost:
8688/ssh",newMyUserServiceImpl());
}
}
Java中自带的封装类,进行WebService的发布。
Publish中的第一个参数,是我们发布的url,就是由你指定通过哪个地址来访问你刚刚发布的服务。
第二个参数是这个服务的具体实现类对象。
接着,我们运行这个这个类,然后访问http:
//localhost:
8688/ssh地址,进行测试。
如果出现能出现该页面,说明发布成功。
可以通过该http:
//localhost:
8688/ssh?
xsd=1地址查看具体的元素定义。
OK,到此,一个简单的WebService发布成功。
2但是我们的目的远没有达到。
我们希望把自己的WebService部署到类似Tomcat的服务器上,可以提供一个接口给开发人员。
而不去关心这个调用这个接口所依赖的系统和开发语言。
2.1在这里,提供的用户登录、添加用户、删除用户、得到用户列表四个功能都将具体的依赖于数据库。
所以第一步需要建立数据库。
表名为user_login,并插入了三条数据。
既然是WebProject,在这里就整用了Hebrinate进行数据库的操作。
2.2新建包,包名为com.system.entity.新建一个实体类,叫做User
User.class:
packagecom.system.entity;
publicclassUser{
privateintuserId;
privateStringusername;
privateStringpassword;
publicintgetUserId(){
returnuserId;
}
publicvoidsetUserId(intuserId){
this.userId=userId;
}
publicStringgetUsername(){
returnusername;
}
publicvoidsetUsername(Stringusername){
this.username=username;
}
publicStringgetPassword(){
returnpassword;
}
publicvoidsetPassword(Stringpassword){
this.password=password;
}
publicUser(){
super();
}
publicUser(intuserId,Stringusername,Stringpassword){
super();
this.userId=userId;
this.username=username;
this.password=password;
}
}
User类有三个属性,username.password,userId.和数据库中的user_login表的列相对应。
接着进行user.hbm.xml的编写:
xmlversion="1.0"encoding='utf-8'?
>
DOCTYPEhibernate-mappingPUBLIC
"-//Hibernate/HibernateMappingDTD3.0//EN"
"http:
//www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
这里就不再对配置文件进行过多的阐述和说明了。
编写hibernate.cfg.xml:
xmlversion='1.0'encoding='utf-8'?
>
DOCTYPEhibernate-configurationPUBLIC"-//Hibernate/HibernateConfigurationDTD3.0//EN""http:
//www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
--Databaseconnectionsettings-->
oracle:
thin:
@localhost:
1521:
ORCL
--SQLdialect-->
--EchoallexecutedSQLtostdout-->
2.3OK,到这一步,hibernate的基本配置都OK了。
前提是你已经引入需要的jar包。
接下来就是我们具体的实现了。
也就是我们常说的dao层。
新建包,包名为com.system.dao.新建类,类名为UserDao
UserDao.class:
packagecom.system.dao;
importjava.util.List;
importorg.hibernate.Query;
importorg.hibernate.Session;
importorg.hibernate.Transaction;
importorg.hibernate.cfg.Configuration;
importorg.springframework.orm.hibernate3.support.HibernateDaoSupport;
importcom.system.entity.User;
publicclassUserDaoextendsHibernateDaoSupport{
publicvoidcreateUser(Useruser){
Sessionsession=newConfiguration().configure().buildSessionFactory().openSession();
Transactiontran=session.beginTransaction();
session.save(user);
mit();
session.close();
}
publicvoiddeleteUser(Useruser){
Sessionsession=newConfiguration().configure().buildSessionFactory().openSession();
Transactiontran=session.beginTransaction();
session.delete(user);
mit();
session.close();
}
publicUserlogin(Stringusername,Stringpassword){
List
intsize=users.size();
Usertempuser;
for(inti=0;i tempuser=users.get(i); if(tempuser.getUsername().equals(username)&& tempuser.getPassword().equals(password)){ returntempuser; } } returnnull; } @SuppressWarnings("unchecked") publicList Stringstr="fromUser"; Sessionsession=newConfiguration().configure().buildSessionFactory().openSession(); Queryquery=session.createQuery(str); List session.close(); returnusers; } } 准确的说,基本的hibernate配置都已经好了,我们编写测试类进行测试。 引入Junit需要的jar包。 这里我就不贴代码了,我的测试结果OK,可以自行测试。 同样的,进行运行MyServiceStart类,进行发布。 测试加入Hibernate框架后的service能够正常运行。 可以通过MyEcplise快捷方便的进行访问。 输入url,点击GO。 可以输入参数,运行提供的服务,接着查看结果。 为了简洁,这块可以自己去操作,这里也不再一步一步的贴上操作截图了。 2.3到了最重要的一步了。 部署到Tomcat中。 在该WebProject中的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: xmlversion="1.0"encoding="UTF-8"standalone="no"? > schemaxmlns: tns=" xmlns: xsd="http: //www.w3.org/2001/XMLSchema"elementFormDefault="qualified" targetNamespace=" elementname="add"type="tns: add"/> elementname="addResponse"type="tns: addResponse"/> elementname="delete"type="tns: delete"/> elementname="deleteResponse"type="tns: deleteResponse"/> elementname="list"type="tns: list"/> elementname="listResponse"type="tns: listResponse"/> elementname="login"type="tns: login"/> elementname="loginResponse"type="tns: loginResponse"/> complexTypename="add"> sequence> elementname="user"type="tns: user"/> sequence> complexType> complexTypename="addResponse"> sequence/> complexType> complexTypename="delete"> sequence> elementname="username"type="xsd: string"/> sequence> complexType> complexTypename="deleteResponse"> sequence/> complexType> complexTypename="list"> sequence/> complexType> complexTypename="listResponse"> sequencemaxOccurs="unbounded"minOccurs="1"> elementname="user"type="tns: user"/> sequence> complexType> complexTypename="login"> sequence> elementname="username"type="xsd: string"/> elementname="password"type="xsd: string"/> sequence> complexType> complexTypename="loginResponse"> sequence> elementname="user"type="tns: user"/> sequence> complexType> complexTypename="user"> sequence> elementname="username"type="xsd: string"/> elementname="password"type="xsd: string"/> elementname="userId"type="xsd: int"/> sequence> complexType> schema> 因为在上次的培训过程中,我已经讲过这些配置文件中的各个含义。 这里就直接贴上代码了。 service.wsdl: xmlversion="1.0"encodi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 如何 利用 Tomcat 部署 WebService 进行 客户端 开发