`
234390216
  • 浏览: 10233197 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
A5ee55b9-a463-3d09-9c78-0c0cf33198cd
Oracle基础
浏览量:462641
Ad26f909-6440-35a9-b4e9-9aea825bd38e
springMVC介绍
浏览量:1775536
Ce363057-ae4d-3ee1-bb46-e7b51a722a4b
Mybatis简介
浏览量:1398380
Bdeb91ad-cf8a-3fe9-942a-3710073b4000
Spring整合JMS
浏览量:395024
5cbbde67-7cd5-313c-95c2-4185389601e7
Ehcache简介
浏览量:679993
Cc1c0708-ccc2-3d20-ba47-d40e04440682
Cas简介
浏览量:530899
51592fc3-854c-34f4-9eff-cb82d993ab3a
Spring Securi...
浏览量:1183979
23e1c30e-ef8c-3702-aa3c-e83277ffca91
Spring基础知识
浏览量:467943
4af1c81c-eb9d-365f-b759-07685a32156e
Spring Aop介绍
浏览量:151403
2f926891-9e7a-3ce2-a074-3acb2aaf2584
JAXB简介
浏览量:68154
社区版块
存档分类
最新评论

Web环境使用相对路径发布Webservice

阅读更多

Web环境使用相对路径发布Webservice

 

         通常我们的Webservice服务的发布地址都将是一个相对路径,在与Spring一起使用时我们需要引入Cxf配置Webserviceschema,如jaxws,用以定义对应的Webservice

 

<?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">

 

   <bean id="helloWorld" class="com.elim.test.cxf.service.HelloWorldServiceImpl"/>

 

   <!-- ID可以加斜杠也可以不加 -->

   <jaxws:server id="/helloWorld" serviceBean="#helloWorld" serviceClass="com.elim.test.cxf.service.HelloWorldService" />

 

</beans>

 

         然后我们需要定义一个CXFServlet,用以接收对应的Webservice请求,如下所示。

 

<?xml version="1.0" encoding="UTF-8"?>

 

<web-app 

        version="3.0" 

        xmlns="http://java.sun.com/xml/ns/javaee" 

        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

       

   <context-param>

      <param-name>contextConfigLocation</param-name>

      <param-value>classpath:webservices.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>

   </servlet>

  

   <servlet-mapping>

      <servlet-name>CxfServlet</servlet-name>

      <url-pattern>/sys/service/*</url-pattern>

   </servlet-mapping>

  

</web-app>

 

         这样如果我们想访问HelloWorldService这个Webservice就可以通过相对于当前工程发布路径的/sys/service/helloWorld来访问了。

         但是如果我们的工程没有使用Spring,但是我们也想把Webservice发布为工程的某一个路径的相对路径怎么办?Cxf也为我们提供了相应的支持,这比使用Spring时的CXFServlet要麻烦一点。Cxf为我们提供了一个CXFNonSpringServlet,这要求我们实现自己的继承自CXFNonSpringServletServlet,然后重写其loadBus方法,最终需要达到的效果就是CXFNonSpringServlet使用的Bus与我们的发布Webservice时使用的Bus是同一个即可。这样当我们访问CXFNonSpringServlet请求某个Webservice时,CXFNonSpringServlet将自动根据请求的相对路径去寻找发布路径为其相对路径的Webservice

 

publicclass WebserviceServlet extends CXFNonSpringServlet {

 

   /**

    *

    */

   private static final longserialVersionUID = 3919868434043901738L;

 

   @Override

   protected void loadBus(ServletConfig sc) {

      super.loadBus(sc);

      //获取当前CXFNonSpringServlet使用的Bus,然后利用该Bus来发布服务

      Bus bus = this.getBus();

      JaxWsServerFactoryBean jsFactoryBean = new JaxWsServerFactoryBean();

      jsFactoryBean.setBus(bus);

      //该路径是相对于当前CXFNonSpringServlet匹配的路径的,也可以加斜杠

      jsFactoryBean.setAddress("helloWorld");

      jsFactoryBean.setServiceClass(HelloWorldService.class);

      jsFactoryBean.setServiceBean(new HelloWorldServiceImpl());

      jsFactoryBean.create();

   }

  

}

 

   这时我们的web.xml需要定义我们自己的CXFNonSpringServlet,即:

 

<?xml version="1.0" encoding="UTF-8"?>

 

<web-app 

        version="3.0" 

        xmlns="http://java.sun.com/xml/ns/javaee" 

        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

       

   <servlet>

      <servlet-name>CxfServlet</servlet-name>

      <servlet-class>com.elim.test.cxf.servlet.WebserviceServlet</servlet-class>

      <load-on-startup>1</load-on-startup>

   </servlet>

  

   <servlet-mapping>

      <servlet-name>CxfServlet</servlet-name>

      <url-pattern>/sys/service/*</url-pattern>

   </servlet-mapping>

  

</web-app>

 

参考文档

http://cxf.apache.org/docs/servlet-transport.html

 

(注:本文是基于Cxf2.7.6所写)

 

 

 

 

 

0
0
分享到:
评论

相关推荐

    NC65开发webservice

    在NC65开发环境中,利用UAP-STUDIO6.5插件开发和发布WebService是一个相对标准的过程,但与之前的版本(如NC633)有所不同。以下是对这一过程的详细说明: 1. **安装插件**: 开发者首先需要安装支持WebService...

    Webservice使用xfire发布及客户端调用

    - 虽然XFire在发布和调用Web服务方面提供了便利,但它的功能相对有限。Java API for XML Web Services (JAX-WS)是Java平台的标准,提供了更广泛的Web服务支持,包括自动代码生成和协议绑定。 - JAX-WS通过注解和...

    使用RAD写WebService

    总结,使用RAD开发WebService是一个相对直观且高效的过程。从准备工具,创建项目,编写Java Bean,生成WebService,到最后的验证和测试,每一步都清晰明了。而在进行版本升级时,需要注意兼容性和配置问题,确保项目...

    webservice四种发布方式及客户端调用

    ### WebService 四种发布方式及客户端调用详解 #### 一、概述 WebService 技术作为企业级应用间通信的重要手段之一,被广泛应用于不同的系统之间进行数据交换和服务交互。本文将详细介绍四种常见的 WebService ...

    eclipse+tomcat+axis下创建WebService

    总的来说,创建和发布 WebService 在 Eclipse 中是一个相对直观的过程,涉及到的主要步骤包括安装和配置 Eclipse 插件、设置 Tomcat 和 Axis、编写 Java 类、发布 WebService、编辑 `server.xml` 以及创建和测试 ...

    WebService

    部署 WebService 到 Web 容器(如 Tomcat 5)的过程相对简单: - 将整个 WebService 工程打包成 WAR 文件; - 将 WAR 文件部署到 Tomcat 的 webapps 目录下; - 启动 Tomcat 服务器。 #### 六、测试 WebService ...

    webservice所需jar包和使用方法

    本文将详细介绍Java调用Web服务所需的jar包以及使用方法。 1. **axis.jar**:这是Axis的核心库,包含了处理SOAP消息、WSDL(Web Services Description Language)解析、Web服务客户端和服务器端实现等功能。通过 ...

    使用cxf和spring开发基于https的webservice服务端以及客户端样例

    在IT行业中,Web服务是一种广泛使用的通信协议,用于应用程序之间的数据交换。本示例将详细介绍如何使用Apache CXF和Spring框架来开发基于HTTPS的安全Web服务,包括服务端和客户端的实现。 Apache CXF是一个开源的...

    java 利用webservice传输文件

    同时,为了部署到服务器环境,可能还需要处理JACOB的动态链接库(DLL)文件的路径设置,确保Java程序在运行时能找到这些库。 在实际应用中,Java Web服务通常会采用诸如Apache CXF或Spring WS这样的框架来简化Web...

    axis+webservice教程

    通过上述步骤,我们了解了如何使用Apache Axis快速搭建Web服务环境,并通过即时发布方式发布了一个简单的Web服务。虽然这种方式非常简便,但在实际开发中,更推荐使用定制发布方式,因为它可以提供更高的灵活性和...

    webservice例子(客户端和服务器端和tomcat部署).zip

    在本压缩包中,"webservice例子(客户端和服务器端和tomcat部署).zip" 提供了一个完整的Web服务示例,包括客户端、服务器端的实现以及在Tomcat服务器上的部署过程。 一、Web Service基础 Web Service的核心技术包括...

    利用AXIS调用webservice所需JAR包

    在IT行业中,Web服务是应用程序之间进行通信的一种标准方法,而WebService API的实现之一就是Apache Axis。本篇文章将深入探讨如何利用AXIS调用WebService,以及所需的JAR包及其作用。 首先,理解AXIS的基本概念至...

    axis1.4开发webservice

    不过,需要注意的是,尽管Axis1.4是一个成熟且功能强大的工具,但它相对较旧,现代的Web服务开发更倾向于使用更新的框架,如JAX-WS(Java API for XML Web Services)和Spring Boot。然而,理解Axis1.4的基本原理...

    调用天气预报webservice

    7. **客户端开发**:在Java环境中,使用Axis1.4调用Web Service时,需要设置正确的环境变量,例如添加Axis到类路径。然后,可以通过创建并实例化stub类,调用相应的方法,将参数传递给这些方法,从而发起请求。 8. ...

    利用wsdl.exe生成webservice代理类

    使用基于协定的 ASP.NET,为 Xml Web Services 实现 生成抽象类。默认情况下,生成客户端代理 类。 /serverInterface 为 ASP.Net Web 服务的服务器端实现生成 接口。将为 wsdl 文档中的每个绑定生成 一个接口...

    C#编码命名规则,Webservice命名

    * 不在代码中使用具体的路径和驱动器名,使用相对路径,并使路径可编程。 数据库命名规则: * 表:e—业务表中相对独立的实体表(例如:课程资源表……) * 视图: v_&lt;ViewName&gt; 首字母大写 * 存储过程:sp_...

Global site tag (gtag.js) - Google Analytics