功能介绍:提供WebService的接口,供其他人调用。
知识点:
WebService 的使用
XML文档操作
Spring + jdbc 链接数据库 数据库的注入
数据库操作 使用 jdbcTemplate 操作
系统:Win7
准备工具:eclipse,下图是我的IDE,自己在eclilpse的官网上下载的。
http://www.eclipse.org/
数据库:MyQSL 5.6
项目用的是Oracle,这个Demo是在我的电脑上搭建的,主要是用来总结和回忆。
由于对oracle不熟悉(以后用到的主要是oracle),现在先mysql代替。
在mysql官网下载解压版的,数据库的安装就不多介绍了,网上一大堆。
Tomcat:apache-tomcat-7.0.64
在eclipse中配置tomcat
step1:打开eclipse->Window->Preferences->Server-Runtime Environments如图
Step2: 因为我配置好了,所以已经存在3个Apcache Tomcat。点击 Add 选择一个
版本(不知道有啥用),对应你下载的tomcat,然后 next
创建一个web项目
选择刚刚配置的Tomcat,一路next。
这里需要注意下,Eclipse和MyEclilpse有点区别,Eclipse创建的Web项目默认使用的路径是WebContent,而MyEclipse默认使用的是WebRoot
如果从MyEclipse中导出的项目,在Eclipse中跑,需要改动一个配置。就是当前项目的配置文件。
在工作空间中找到当前的项目 WebServiceDemo->.settings->org.eclipse.wst.common.component
下图中的绿色部分
首先明确目的,即需要得到什么结果。
远程客户端调用WebService接口,传入一个参数,返回想要的结果。
客户端调用方式:
使用xfire方式。需要xfire的jar包。
把需要的jar包直接复制到WebContent/WEB-INF/lib目录下,再在测试类中引入即可
代码如下
package com.test;
import java.net.MalformedURLException;
import java.net.URL;
import org.codehaus.xfire.client.Client;
public class WebServiceTest {
public static void main(String[] args) throws MalformedURLException, Exception {
// TODO Auto-generated method stub
String url = "http://localhost:8080/WebServiceDemo/services/queryPeople?wsdl" ;
String xml = "xiaoming " ;
Client c = new Client(new URL(url));
Object[] o = c.invoke( "queryPeopleInfo", new Object[]{xml});
//目的是通过queryPeopleInfo方法查询这个人的信息,xml为传入的参数。
//如果成功,o为返回的值;失败,则为空。因为WebService没有创建,此处肯定返回失败。
if(o !=null){
String result = o [0].toString();
System. out.println(result );
} else{
System. out.println("没有找到" );
}
}
}
由于WebService服务还没有搭建、所有执行后结果为: 没有找到
First、把项目需要的jar包 都copy到 WebContent/WEB-INF/lib里 。 本Demo中需要的 jar包在代码中都有
编写代码
在src目录下创建3个包,分别是com.service、com.service.impl、com.test
其中com.test是客户端测试程序(当然也可以单独建立一个项目进行测试)
com.service为定义的WebService接口、com.service.impl为具体实现的类包
接口定义:通过name查询到该人的相关信息
package com.service;
public interface QueryPeople {
public String queryPeopleInfo(String name );
}
package com.service.impl;
import com.service.QueryPeople;
public class QueryPeopleImpl implements QueryPeople{
@Override
public String queryPeopleInfo(String name ) {
// TODO Auto-generated method stub
//具体在数据库查询的一些处理
return "查询 " + name + " 成功";
}
}
配置文件
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="2.4"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name> XFireServletservlet-name >
<servlet-class> org.codehaus.xfire.transport.http.XFireConfigurableServlet servlet-class>
<init-param>
<param-name> configparam-name >
<param-value> services.xmlparam-value >
init-param>
<load-on-startup> 0load-on-startup>
servlet>
<servlet-mapping>
<servlet-name> XFireServletservlet-name >
<url-pattern> /services/*url-pattern >
servlet-mapping>
<welcome-file-list>
<welcome-file> index.jspwelcome-file >
welcome-file-list>
web-app>
配置说明:标签中的< init-param> 如果不配置的话,默认的services.xml路径为WebContent/WEB-INF/META-INF/xfire/services.xml( 具体是哪里配置的这个路径不清楚,知道的小伙伴可以告诉我)
<beans xmlns="http://xfire.codehaus.org/config/1.0" >
<service>
<name> queryPeoplename >
<serviceClass> com.service.QueryPeopleserviceClass >
<implementationClass>
com.service.impl.QueryPeopleImpl
implementationClass>
<style> wrappedstyle >
<use> literaluse >
<scope> applicationscope >
service>
beans>
每个就是一个服务、name 为提供的服务名、serviceClass为服务的接口、implementationClass为具体实现的类
到此为止,一个WebService的框架基本搭建完成了。
下面把项目运行起来,来测试吧!
似乎不是我们想要的结果。
这里注意下浏览器里的路劲:只是tomcat服务+项目名称, 我们需要的是WebService服务
so
后面还要加上services加 真正的路径为:http://localhost:8080/WebServiceDemo/services最开始我一直疑惑services的由来,找找配置文件才明白 services 就是在web.xml 中配置的XFireServlet名称,再在浏览器中输入回车
界面就出来了,到这步已经说明配置成功了。点击[wsdl] 可以查看具体的接口信息,如下
OK,再返回到最初的客户端测试代码中去。
运行代码、预期得到的结果为 : ” 查询 (传入的值) 成功”
结果: 查询
测试成功!
本文为转载,原文地址:http://blog.csdn.net/crazycodings/article/details/49493595