zoukankan      html  css  js  c++  java
  • Maven 创建java Web项目,配置Spring,CXF

    1.搭建Maven环境

    参考文章

    Maven3路程(一)环境搭建

    http://www.cnblogs.com/leiOOlei/p/3359561.html

    Maven3路程(二)Eclipse集成Maven

    http://www.cnblogs.com/leiOOlei/p/3361379.html

    Maven3路程(三)用Maven创建第一个web项目(1)

    Maven3路程(三)用Maven创建第一个web项目(2)servlet演示

    Maven 配置Spring

    参考

    http://blog.csdn.net/shiyuezhong/article/details/7959863

    重点添加这两个依赖

     <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                 <version>3.1.1.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                 <version>3.1.1.RELEASE</version>
            </dependency>

     

    3.Maven 添加 CXF

     <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-frontend-jaxws</artifactId>
            <version>3.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http</artifactId>
            <version>3.0.0</version>
        </dependency>
            <!-- Jetty is needed if you're are not using the CXFServlet -->
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http-jetty</artifactId>
             <version>3.0.0</version>
        </dependency>

     

    最后Web.xml文件是这样

    <!DOCTYPE web-app PUBLIC
     "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
     "http://java.sun.com/dtd/web-app_2_3.dtd" >
    
    <web-app>
     <listener>
          <listener-class>
             org.springframework.web.context.ContextLoaderListener
          </listener-class>
       </listener>
       <context-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>classpath:applicationContext.xml</param-value>
       </context-param>
       
         <display-name>Archetype Created Web Application</display-name>
      <!--部署到tomcat中,cxf 的webservice服务就启动了,访问的地址是 xx.com/ws/* -->
       <servlet>
        <servlet-name>CXFServlet</servlet-name>
        <display-name>CXFServlet</display-name>
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
        <servlet-name>CXFServlet</servlet-name>
        <url-pattern>/ws/*</url-pattern>
      </servlet-mapping>
       
    </web-app>

    POM.xml文件时这样的

     <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.webtest</groupId>
      <artifactId>test</artifactId>
      <packaging>war</packaging>
      <version>0.0.1-SNAPSHOT</version>
      <name>test Maven Webapp</name>
      <url>http://maven.apache.org</url>
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
    
        <dependency>    
            <groupId>javax.servlet</groupId>    
            <artifactId>servlet-api</artifactId>    
            <version>2.5</version>    
            <scope>provided</scope>    
        </dependency>
        
    
     <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                 <version>3.1.1.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                 <version>3.1.1.RELEASE</version>
            </dependency>
    
     <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-frontend-jaxws</artifactId>
            <version>3.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http</artifactId>
            <version>3.0.0</version>
        </dependency>
            <!-- Jetty is needed if you're are not using the CXFServlet -->
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http-jetty</artifactId>
             <version>3.0.0</version>
        </dependency>
        
      </dependencies>
      <build>
        <finalName>test</finalName>
      </build>
    </project>

    applicationContext.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:context="http://www.springframework.org/schema/context"
    xmlns:util="http://www.springframework.org/schema/util"
    xmlns:jaxws="http://cxf.apache.org/jaxws" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd 
    http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
    
    <bean id="person" class="test.Person">
           <property name="name" value="zhangsan"></property>
           <property name="age" value="12"></property>
    </bean>
    
    <bean id="app" class="test.App">
       <property name="person" ref="person"></property>
    </bean>
    
     <import resource="classpath:META-INF/cxf/cxf.xml"/>
        <import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
        
       <bean id="hello" class="test.HelloWorldImpl" />
     
    <jaxws:endpoint id="helloWorld" implementor="#hello" address="/HelloWorld" />
        
    </beans>

    服务端端生成的服务地址是这样的http://localhost:8080/maventtest1/ws/HelloWorld?wsdl

    必须添加?wsdl才可以看到xml信息

     4.CXF生成客户端代码

    服务端的cxf的web服务好了以后,就可以暴露给客户端使用,客户端在使用的时候要先生成客户端代码

    这个地方有多种方式,我用的CXF自带wsdl2java的工具

    在电脑的环境变量中配置CXF_HOME 和配置path路径

    然后就可以使用wsdl2java的命令

    wsdl2java用法:

    wsdl2java -p com -d src -all  http://localhost:8080/maventtest1/ws/HelloWorld?wsdl
    -p  指定其wsdl的命名空间,也就是要生成代码的包名:
    -d  指定要产生代码所在目录
    -client 生成客户端测试web service的代码
    -server 生成服务器启动web  service的代码

    具体地址是查看参数信息可以参考http://cxf.apache.org/docs/how-do-i-develop-a-client.html#HowdoIdevelopaclient?-WSDL2JavageneratedClient

    结果就是生成一个命名空间下的java类集合。

    里面会有一个 XXXService的类,调用GetXXPort的方法,会返回原来服务端的一个接口类。就可以调用服务端的服务了

    HelloService service = new HelloService();
    Hello client = service.getHelloHttpPort();
     
    String result = client.sayHi("Joe");
     
  • 相关阅读:
    linux压缩命令
    常用正则表达式
    java23种设计模式
    程序员
    让程序猿离职的非钱原因
    PHP MVC 中的MODEL层
    CSS样式补充代码
    网页中插入背景音乐
    Window.document对象(2)
    Window.document对象(1)
  • 原文地址:https://www.cnblogs.com/zjypp/p/3773029.html
Copyright © 2011-2022 走看看