Apache-CXF开发Webservice学习笔记

来源:互联网 发布:冬季男士乳液推荐知乎 编辑:程序博客网 时间:2024/05/23 16:25

公司前辈们开发webservice服务架构之前都是在用C#去做。

作为新手开始学习使用Java开发webservice,结合网上的学习资料选择了Apache的CXF。

现已开发完成并应用,记录一下开发过程中的学习笔记。

了解Apache-CXF

Apache CXF是一个开源的Service框架,可以用于简化用户的service开发,

基于CXF开发的应用可提供SOAP、XML/HTTP、RESTFUL HTTP或CORBA等服务。

CXF底层页可以使用不同的传输协议,包括HTTP、JMS或JBI等。

支持大量的Web Service标准,包括SOAP、WS-I Basic Profile、WSDL、

WS-Addressing、WS-Policy、WS-ReliableMessaging和WS-Security。

Webservice开发

搭建项目架构,使用maven项目管理+Spring整合Mybatis

添加CXF的maven依赖:

  <properties>    <!-- cxf版本号 -->    <cxf.version>2.7.7</cxf.version>  </properties><dependencies>    <!-- cxf的开发包 -->    <dependency>        <groupId>org.apache.cxf</groupId>        <artifactId>cxf</artifactId>        <version>${cxf.version}</version>        <type>pom</type>    </dependency>    <dependency>        <groupId>org.apache.cxf</groupId>        <artifactId>cxf-rt-frontend-jaxws</artifactId>        <version>${cxf.version}</version>    </dependency>    <dependency>        <groupId>org.apache.cxf</groupId>        <artifactId>cxf-rt-transports-http</artifactId>        <version>${cxf.version}</version>    </dependency>    <dependency>        <groupId>org.apache.cxf</groupId>        <artifactId>cxf-rt-transports-http-jetty</artifactId>        <version>${cxf.version}</version>    </dependency></dependencies>

CXF中采用注解的方式声明哪些类作为WebService进行发布,

@WebService:声明webservice接口;

@WebService(endpointInterface="com.test.TestService"):声明这个类是TestService接口的实现类。

配置spring-mybatis.xml文件时整合cxf的配置:

    <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"/>         <cxf:server serviceClass="com.test.service.TestService" address="/hello">        <cxf:serviceBean>            <bean class="com.test.service.impl.TestServiceImpl"/>        </cxf:serviceBean>    </cxf:server>

发布webservice应用程序
        serviceClass属性 : 指向当前需要发布的webservice应用实现的接口
        address属性 : 描述当前发布的webservice程序唯一地址,当其他工程需要访问本工程发布的某一个webservcie程序时,需要通过这个唯一地址进行访问
        serviceBean : 指向当前发布的webservice程序的具体实现类

配置web.xml文件:

  <servlet>    <servlet-name>cxf</servlet-name>    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>  </servlet>  <servlet-mapping>    <servlet-name>cxf</servlet-name>    <url-pattern>/*</url-pattern>  </servlet-mapping>

这里webservice可以通过tomcat验证是否发布成功。

在开发过程中遇到的一些问题:


学习maven项目打包发布war包部署到服务器上

        <plugin>          <groupId>org.apache.maven.plugins</groupId>          <artifactId>maven-resources-plugin</artifactId>          <configuration>              <encoding>UTF-8</encoding>          </configuration>        </plugin>        <plugin>            <groupId>org.apache.maven.plugins</groupId>            <artifactId>maven-dependency-plugin</artifactId>            <version>2.10</version>            <executions>                <execution>                    <id>copy-dependencies</id>                    <phase>package</phase>                    <goals>                        <goal>copy-dependencies</goal>                    </goals>                    <configuration>                        <outputDirectory>${project.build.directory}/lib</outputDirectory>                    </configuration>                </execution>            </executions>        </plugin>
这里将jar包依赖和resource配置文件一起打包发布。


原创粉丝点击