WebService实战(二)——在Web项目中创建CXF服务
发布时间:2020-12-16 22:35:15 所属栏目:安全 来源:网络整理
导读:? ? 在Web项目中创建CXF服务是我们在项目中最常用的,一般可以分为两类,一个是为类创建CXF服务,一个是为接口创建CXF服务,这篇博文就为大家介绍一下如何实现这两种方式。 ? ? 一、创建服务端 ? ? 1.建立web项目 ? ? 2.引用jar包 ? ? 3.创建对类和接口 服务
? ? 在Web项目中创建CXF服务是我们在项目中最常用的,一般可以分为两类,一个是为类创建CXF服务,一个是为接口创建CXF服务,这篇博文就为大家介绍一下如何实现这两种方式。 ? ? 一、创建服务端 ? ? 1.建立web项目 ? ? 2.引用jar包 ? ? 3.创建对类和接口 服务类:
package com.tgb.cxf.web.server; import javax.jws.WebService; //服务类 @WebService public class Hello { public String syaHello(String name){ return "Hello " +name; } }
package com.tgb.cxf.web.server.impl; import javax.jws.WebService; //服务接口 @WebService public interface Bye { public String sayBye(String name); } 接口实现:
package com.tgb.cxf.web.server.impl; public class ByeImpl implements Bye{ @Override public String sayBye(String name) { return "Bye " +name; } } 4.配置web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 方式一:引入cxf文件 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:cxf.xml</param-value> </context-param> <servlet> <servlet-name>cxf</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> <!-- 方式二:引入cxf文件 --> <!-- <init-param> <param-name>config-location</param-name> <param-value>classpath:cxf.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> --> </servlet> <servlet-mapping> <servlet-name>cxf</servlet-name> <url-pattern>/service/*</url-pattern> </servlet-mapping> </web-app> ? ? ? ?? 5.配置cfx.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:jaxrs="http://cxf.apache.org/jaxrs" xmlns:cxf="http://cxf.apache.org/core" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd"> <!-- 引入CXF Bean定义如下,早期的版本中使用 --> <import resource="classpath:META-INF/cxf/cxf.xml" /> <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" /> <import resource="classpath:META-INF/cxf/cxf-servlet.xml" /> <!-- ===============配置类的形式webservice服务================= address:tomcat的host http://ip:port/projectName/service/后面的一端路径 http://ip:port/projectName/service/hello implementor:指定具体的服务的类 --> <jaxws:endpoint id="hello" address="/hello" implementor="com.tgb.cxf.web.server.Hello"> <!-- 输入拦截器,打印输入的消息 --> <jaxws:inInterceptors> <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"></bean> </jaxws:inInterceptors> <jaxws:outInterceptors> <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"></bean> </jaxws:outInterceptors> </jaxws:endpoint> <!-- ===============配置带有接口的webservice服务================= address:tomcat的host http://ip:port/projectName/service/后面的一端路径 http://ip:port/projectName/service/bye serviceClass:服务接口的类 --> <jaxws:server address="/bye" serviceClass="com.tgb.cxf.web.server.impl.Bye"> <!-- 服务接口的实现类 --> <jaxws:serviceBean> <bean class="com.tgb.cxf.web.server.impl.ByeImpl"></bean> </jaxws:serviceBean> <jaxws:inInterceptors> <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"></bean> </jaxws:inInterceptors> <jaxws:outInterceptors> <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"></bean> </jaxws:outInterceptors> </jaxws:server> </beans> ? ? 6.部署到Tomcat中,发布服务 ? ? 在浏览器中输入项目地址,可以看到发布的服务 ? ?? ? ? 二、生成代码 ? ??使用wsdl2java命令生成java文件 ? ?? ? ?三、创建客户端 ? ? 1.引入生成好的服务端代码 ? ? 2.调用服务类
package com.rl.cxf.web.client; import com.rl.web.inter.ByeInter; import com.rl.web.inter.ByeInterService; public class WebInterClient { public static void main(String[] args) { //调用服务接口 ByeInterService bs = new ByeInterService(); ByeInter bi = bs.getByeInterPort(); String result = bi.sayBye("周周"); System.out.println(result); } }? ? 3.调用服务接口
package com.rl.cxf.web.client; import com.rl.web.inter.ByeInter; import com.rl.web.inter.ByeInterService; public class WebInterClient { public static void main(String[] args) { //调用服务接口 ByeInterService bs = new ByeInterService(); ByeInter bi = bs.getByeInterPort(); String result = bi.sayBye("周周"); System.out.println(result); } } ? ? 运行结果如下: ? ?? ? ?? ? ? 总结: ? ? 在web项目中,和java项目不同的是我们使用cfx.xml配置文件,来加载服务工厂对象、加入输入输出拦截器和指定服务类的接口和实现,相比较来说方便了许多,配置也比较简便。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |