简单的Webservice实现
1???????简介???????Cxf有四个主要的类:
? ???????Cxf还有四个主要的帮忙创建服务端和客户端的工厂类:
2???????普通实现2.1?????定义WebService类???????对于服务端而言,我们首先要准备一个我们需要发布为WebService的类,而这个类通常是基于某个接口的。所以首先我们先在服务端定义一个接口及其实现类。 ?
Java代码??
??
Java代码??
class?HelloWorldImpl?implements?HelloWorld?{??
2.2?????创建服务端???????上面我们已经定义好了需要发布为WebService的接口HelloWorld及其实现类HelloWorldImpl。接下来我们需要把它发布为一个WebService。 ?
Java代码??
class?Server?{??
?????? 这样我们就把HelloWorldImpl发布为一个WebService了,地址为http://localhot:8080/test/services/HelloWorld。接下来我们在浏览器里面输入http://localhost:8080/test/services/HelloWorld?wsdl就可以查看该服务对应的WSDL文件了。通过http://localhost:8080/test/services/HelloWorld我们可以在客户端访问到其对应的Service及其操作。接下来我们来看看客户端如何创建。 2.3?????创建客户端???????客户端我们是通过ClientProxyFactoryBean针对于WebService发布的地址及其接口生成一个代理类。 ?
Java代码??
class?Client?{??
??? 有了针对于WebService的代理类后,我们就可以通过该代理类访问WebService公布的对应方法进行相关操作了。客户端代理类在对WebService进行相关操作时并不是直接的对该WebService进行了操作,而是把请求操作封装为对应的信息发送给WebService发布的地址。WebService服务端在接收到对应的消息后把它解析为对应的参数和操作,之后在服务端对WebService进行操作,之后再将返回值封装为对应信息返回给客户端。客户端解析后返回给代理类。整个过程就是这样进行的。 3???????基于Spring的实现3.1?????定义WebService类???????基于Spring的简单WebService实现也需要我们定义需要发布为WebService的类。这里跟上面一样,我们定义如下: ?
Java代码??
public?String?sayHi(String?who);???
?
Java代码??
?+?who;??
3.2?????创建服务端???????基于Spring的服务端是通过配置文件来进行的。首先我们需要在web.xml文件中定义一个CXFServlet,用于拦截WebService请求。 ?
Xml代码??
在web.xml文件中定义了CXFServlet之后,在Web容器启动的时候,CXFServlet默认会到WEB-INF目录下寻找名叫cxf-servlet.xml的配置文件中定义的WebService进行发布。如果不想CXFServlet在默认位置寻找默认配置文件,我们可以通过CXFServlet的init-param指定参数config-location的值为配置文件的位置。 ? ???????配置好CXFServlet之后,我们来定义我们的cxf-servlet.xml。cxf-servlet.xml文件的写法是基于Spring的bean配置文件来的。这里我们定义如下: ?
Xml代码??
beans?xmlns="http://www.springframework.org/schema/beans"??
???? 在上述文件中我们引入了简单WebService的simple命名空间。该命名空间下主要有两个元素,simple:server和simple:client。Server用于服务端,client用于客户端。上述的address是基于CXFServlet的url-pattern来的。 3.3?????创建客户端???????基于Spring的客户端的写法也是定义一个配置文件,类似于Spring的配置文件,然后把我们的WebService定义成一个普通的Spring bean对象。这主要有两种方式:第一种是通过simple命名空间来定义,第二种是通过ClientProxyFactoryBean来定义。 ? 第一种: ???????先在配置文件中加上simple的命名空间,之后通过simple:client来定义一个WebService的客户端。这里我们在类路径的根目录下定义一个cxf-client.xml文件,其内容如下所示: ?
Xml代码??
beans?xmlns="http://www.springframework.org/schema/beans"??
? 第二种:
Xml代码??
<!--?ClientProxyFactoryBean?-->????
? ? ? ? ?之后我们就可以把它当做一个普通的Spring bean对象来使用了。如:
Java代码??
class?SpringClient?{??
?? (本文首次发布于本人的iteye博客,http://elim.iteye.com/blog/1983508) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |