`

部署WebService服务(cxf,spring)

阅读更多
使用CXF,spring部署Web Service服务

server 实现

步骤一 新建Web工程

步骤二 下载cxf包(地址:http://www.apache.org/dyn/closer.cgi?path=/cxf/2.6.2/apache-cxf-2.6.2.tar.gz)

步骤三 解压cxf包,将apache-cxf-*.*.*/lib目录下的jar包复制到Web工程->WebRoot->WEB-INF->lib文件夹下(cxf已经整合了spring所以不需要在导入spring的包了)。不必导入全部jar包 具体见附件图片

步骤四 在Web工程下创建一个接口并定义一个方法
例:
package com.cxf;

import javax.jws.WebParam;
import javax.jws.WebService;

@WebService
public interface ISayHello
{
    public String sayHello(@WebParam(name="name")String name);
}

步骤五 新建一个类继承接口
例:
package com.cxf;
import javax.jws.WebService;

@WebService(endpointInterface = "com.cxf.ISayHello")
public class SayHelloImpl implements ISayHello
{
    @Override
    public String sayHello(String name)
    {
        return "my name is " + name;
    }
}

步骤六 在工程src目录下创建spring配置文件applicationContext.xml
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:jaxws="http://cxf.apache.org/jaxws"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">

<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

<bean id="sayHelloImpl" class="com.cxf.SayHelloImpl" />
<jaxws:endpoint id="sayHello" implementor="#sayHelloImpl" address="/sayHello" />
</beans>

步骤七 修改Web工程->WebRoot->WEB-INF->web.xml
在web.xml文件<web-app></web-app>中加上:
<context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>
          classpath:applicationContext.xml
      </param-value>
  </context-param>

  <listener>
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
   </listener>
   <servlet>
       <servlet-name>CXFServlet</servlet-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>/*</url-pattern>
   </servlet-mapping>

发布我们新建的Web工程
打开浏览器访问:http://localhost:8080/WebService/




client 实现


步骤一 在工程中新建一个类(可以重新建一个工程但需要导入cxf的相关包)
例:
package com.cxf.client;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.cxf.ISayHello;

public class CxfClient
{
    public static void main(String[] args)
    {
        ClassPathXmlApplicationContext context
        = new ClassPathXmlApplicationContext(new String[] {"com/cxf/client/applicationContext_client.xml"});

    ISayHello client = (ISayHello)context.getBean("sayHello2");

    String response = client.sayHello("Joe");
    System.out.println("Response: " + response);
    System.exit(0);
    }
}

步骤二 在client同级目录新建client spring配置文件applicationContext_client.xml
applicationContext_client.xml文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:jaxws="http://cxf.apache.org/jaxws"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
          http://www.springframework.org/schema/beans/spring-beans.xsd
   http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
<!--
该方式访问ws服务也是利用spring的依赖注入法
id是spring IOC容器唯一标识符
serviceClass是webservices服务接口
address是服务wsdl地址
-->
    <jaxws:client id="sayHello2" serviceClass="com.cxf.ISayHello" address="http://localhost:8080/WebService/sayHello?wsdl" />
</beans>

执行CxfClient的main方法
控制台打印
Response: my name is Joe


在完成实例中所遇问题

启动tomcat抛:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sayHello': Invocation of init method failed; nested exception is java.lang.LinkageError: JAXB 2.1 API is being loaded from the bootstrap classloader, but this RI (from jar:file:/D:/apache-tomcat-6.0.29/webapps/WebService/WEB-INF/lib/jaxb-impl-2.2.4-1.jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class) needs 2.2 API. Use the endorsed directory mechanism to place jaxb-api.jar in the bootstrap classloader. (See http://java.sun.com/j2se/1.6.0/docs/guide/standards/)
Caused by: java.lang.LinkageError: JAXB 2.1 API is being loaded from the bootstrap classloader, but this RI (from jar:file:/D:/apache-tomcat-6.0.29/webapps/WebServiceCXF/WEB-INF/lib/jaxb-impl-2.2.4-1.jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class) needs 2.2 API. Use the endorsed directory mechanism to place jaxb-api.jar in the bootstrap classloader. (See http://java.sun.com/j2se/1.6.0/docs/guide/standards/)

问题原因:cxf与jdk jar包冲突
解决方法:
1.升级JDK到jdk1.6.0_25(据说jdk1.6.0_25后就支持了),然后修改tomcat的执行jdk版本(还有另一种方法,可以google下)


问题二:
执行客服端类main方法时抛:
Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [demo/spring/client/client-beans.xml]; nested exception is javax.xml.parsers.FactoryConfigurationError: Provider org.apache.xerces.jaxp.DocumentBuilderFactoryImpl not found

问题原因:
是我使用MyEclipse创建项目时引用了J2EE 1.4 Library Container库

解决方法:
1.删掉J2EE 1.4 Library 。
2.换为JAVA EE 5/6 Library




  • 大小: 47.2 KB
分享到:
评论

相关推荐

    WebService的CXF整合Spring

    5. **部署和测试**:将Spring配置文件加载到Spring应用上下文中,然后通过Spring的ContextLoaderListener或Servlet容器(如Tomcat)启动CXF服务。可以使用CXF提供的测试工具或HTTP客户端进行服务调用和验证。 6. **...

    webservice-cxf-spring-jar.zip

    【标题】"webservice-cxf-spring-jar.zip" 是一个包含了使用Apache CXF与Spring框架集成开发Web服务的Java库集合。这个压缩包提供了一整套必要的JAR文件,以便于开发者在他们的项目中快速搭建和运行基于CXF的Web服务...

    webservice(cxf)与spring整合源码+文档

    标题"webservice(cxf)与spring整合源码+文档"表明这是一个关于如何将CXF Web服务与Spring框架集成的学习资源。文档和源代码一起提供,使得学习者能够通过实践来理解这一过程。 描述中提到"webservice与spring整合...

    webservice cxf spring整合返回list,bean,string,json,xml项目完整实例

    例如,使用`@WebService`注解标记服务类,使用`@WebMethod`标记服务方法,然后通过CXF的Servlet或Spring的ApplicationContext来发布服务。 4. **返回List类型数据**:在Web服务中,你可以返回一个List类型的集合,...

    webservice cxf 整合spring例子源代码

    在Web服务开发中,Apache CXF是一个广泛使用的开源框架,它提供了创建、部署和管理Web服务的强大功能。CXF不仅支持SOAP,还支持RESTful API,使得开发者能够灵活地选择适合项目需求的服务模型。同时,Spring框架作为...

    Apache CXF2+Spring2.5轻松实现WebService

    本教程将深入探讨如何利用Apache CXF 2与Spring 2.5来构建和使用WebService。 首先,让我们理解这两个组件的基本概念。Apache CXF是一个全面的服务框架,它支持多种Web服务规范,如SOAP、RESTful、WS-*等。它提供了...

    webService(基于cxf)的完整例子

    4. **CXF服务部署**:CXF提供多种部署方式,包括独立服务器、Tomcat等应用服务器,以及Spring容器。通过修改CXF的配置文件,可以控制服务的行为,如端口号、绑定地址等。 5. **测试Web服务**:在提供的...

    webservice-CXF-spring+maven

    【标题】"webservice-CXF-spring+maven" 指的是使用Apache CXF框架,结合Spring和Maven构建Web服务。Apache CXF是一个开源的Java框架,它允许开发人员创建和消费各种Web服务,包括SOAP和RESTful类型。Spring框架则...

    cxf+spring实现webservice

    本篇将深入探讨如何利用CXF和Spring来创建、部署和消费Web Service。 CXF,全称CXF Commons eXtensible Framework,是一个开源的Java Web服务框架,它支持多种Web服务标准,如SOAP、RESTful等。CXF允许开发者以Java...

    webservice CXF结合Spring所需jar包

    总结来说,"webservice CXF结合Spring所需jar包"是构建基于CXF和Spring的Web服务的关键组成部分,它们提供了开发、运行和管理Web服务所必需的功能。了解并正确使用这些jar包,能帮助开发者更高效地实现服务的创建、...

    webservice cxf+spring maven项目

    总结来说,"webservice cxf+spring maven项目"是一个适合初学者的示例,它展示了如何利用CXF、Spring和Maven构建、部署和测试Web服务。这个项目涵盖了Web服务的基本概念,以及CXF和Spring在Web服务中的实际应用,为...

    webservice+cxf+spring

    【标题】:“WebService+CXF+Spring”是一个关于在Java环境中使用Apache CXF框架与Spring框架集成实现Web服务的专题。Apache CXF是一个开源的Web服务框架,它允许开发人员创建和部署SOAP和RESTful Web服务。Spring...

    WebService CXF Spring Hibernate

    CXF支持SOAP、RESTful API、WS-*规范,并且易于与Spring框架集成,提供了一种声明式的方式创建和部署Web服务。 ### Spring框架 `Spring`是Java领域最流行的轻量级应用程序框架,它提供了依赖注入(DI)、面向切面...

    spring+CXF实现WebService(http+https)

    Spring框架是Java企业级应用开发的首选,而CXF是一个强大的开源服务框架,支持创建和消费Web服务。本教程将深入探讨如何利用Spring和CXF来实现基于HTTP和HTTPS的Web服务,并且将涉及到HTTPS的证书配置。 1. **...

    基于CXF的Webservice,CXF+Spring

    而Apache CXF是一个开源的Java框架,专门用于构建和部署Web服务。CXF集成了Spring框架,使得开发、配置和管理Web服务变得更加简便。下面将详细阐述基于CXF的Web Service以及与Spring的整合。 **一、CXF Web Service...

    webservice使用cxf的实例

    总的来说,"webservice使用cxf的实例"这个主题涵盖了从基础理论到实际操作的各个环节,包括CXF框架的使用、Web服务的创建与部署、客户端调用、数据绑定、安全性和Spring集成等多个方面。通过学习和实践,开发者可以...

    WebService CXF 对象传递 附

    - 在CXF环境中,可以使用Spring配置文件或Java代码来部署服务。例如,使用Spring配置文件: ```xml address="/myService"&gt; ``` 7. **客户端调用** CXF也提供了生成客户端代理类的工具,便于调用远程Web...

    Spring+CXF 发布WebService服务

    本文将深入探讨如何使用Spring和CXF来发布WebService服务。 首先,Spring是一个开源的Java平台,它提供了全面的编程和配置模型,用于简化企业级应用的开发。Spring框架的核心特性包括依赖注入、面向切面编程(AOP)...

    发布webService服务接口与spring整合教程

    你也可以使用Spring-WS或Apache CXF等库来创建WSDL并部署服务。 4. **测试和调试**:确保编写了单元测试来验证Web Service接口的功能。你还可以使用工具(如SoapUI)进行功能测试和性能测试。 5. **注意兼容性**:...

Global site tag (gtag.js) - Google Analytics