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

上传人:b****2 文档编号:17221841 上传时间:2023-04-24 格式:DOCX 页数:26 大小:620.13KB
下载 相关 举报
如何利用Tomcat部署WebService进行客户端开发.docx_第1页
第1页 / 共26页
如何利用Tomcat部署WebService进行客户端开发.docx_第2页
第2页 / 共26页
如何利用Tomcat部署WebService进行客户端开发.docx_第3页
第3页 / 共26页
如何利用Tomcat部署WebService进行客户端开发.docx_第4页
第4页 / 共26页
如何利用Tomcat部署WebService进行客户端开发.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

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

《如何利用Tomcat部署WebService进行客户端开发.docx》由会员分享,可在线阅读,更多相关《如何利用Tomcat部署WebService进行客户端开发.docx(26页珍藏版)》请在冰豆网上搜索。

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

如何利用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);

publicListlist();

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);

}

 

publicListlist(){

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">

oracl_sequence

这里就不再对配置文件进行过多的阐述和说明了。

编写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.jdbc.driver.OracleDriver

jdbc:

oracle:

thin:

@localhost:

1521:

ORCL

scott

orcl

--SQLdialect-->

org.hibernate.dialect.OracleDialect

true

--EchoallexecutedSQLtostdout-->

true

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){

Listusers=this.getUserList();

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")

publicListgetUserList(){

Stringstr="fromUser";

Sessionsession=newConfiguration().configure().buildSessionFactory().openSession();

Queryquery=session.createQuery(str);

Listusers=query.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模板 > 动态背景

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1