webservice发布服务:CXF及客户端调用

2.CXF:(与spring整合)

CXF相对来说操作没有AXIS繁琐

1.导入spring的jar包和cxf的jar包

2.在spring的核心配置文件中配置发布的接口类

<?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-3.0.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
       1:id
       2:提供服务的访问地址
       3:提供服务的类...
      -->
 <jaxws:endpoint id="springService" address="/springService" implementor="cn.itcast.cxf.web.SpringServiceHello">
 </jaxws:endpoint>

 <!-- 我的天气预报 -->
 <!-- <jaxrs: id="weather" address="/weather" serviceClass="cn.itcast.cxf.web.Weather">

 </jaxrs:server> -->
 <jaxws:endpoint id="weather" address="/weather" implementor="cn.itcast.cxf.web.Weather">
 </jaxws:endpoint>
 <!-- 音乐人 -->
 <jaxws:endpoint id="music" address="/music" implementor="cn.itcast.cxf.web.Music">
 </jaxws:endpoint>

 <!-- 发布一个带接口的webservice
      1:id
      2:提供服务的访问地址
      3:接口的类型
 -->

 <jaxws:server id="ipaddress" address="/ipaddress" serviceClass="cn.itcast.cxf.web.IpAddressService">
   <jaxws:serviceBean>
    <!-- 接口的实现类... -->
    <bean class="cn.itcast.cxf.web.IpAddressServiceImpl"></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>

3.在web.xml中配置cxf的servlet过滤器

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
 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_2_5.xsd">

 <!-- 通过spring 的listener 去解析 cxf-Servlet 配置文件... -->
 <!-- <listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener> -->

 <context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>/WEB-INF/cxf-servlet.xml</param-value>
 </context-param>

 <!--

   第一次访问CXFServlet 然后/WEB-INF/cxf-servlet.xml 交给 init 方法 去解析...
  cxf 与spring 进行无缝的整合,调用spring.jar 包里面的类... 解析 cxf-servlet.xml 配置文件...拿到配置文件里面的信息..
   <jaxws:server id="ipaddress" address="/ipaddress" serviceClass="cn.itcast.cxf.web.IpAddressService">

   <jaxws:serviceBean>
    接口的实现类...
    <bean class="cn.itcast.cxf.web.IpAddressServiceImpl"></bean> 

  JaxWsServerFactoryBean bean=new JaxWsServerFactoryBean();
  request.

  http://localhost:8080/cxfspringweb/services  + /ipaddress

  bean.setAddress(http://localhost:8080/cxfspringweb/services  + /ipaddress);

  //接口
  通过反射拿到cn.itcast.cxf.web.IpAddressService.class
  bean.setServiceClass();

  bean.ServiceBean(Class.forName("cn.itcast.cxf.web.IpAddressServiceImpl").newInstance());

  bean.create();

  -->

 <servlet>
        <servlet-name>cxf</servlet-name>
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
        <init-param>
         <param-name>config-location</param-name>
         <param-value>/WEB-INF/cxf-servlet.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>cxf</servlet-name>
        <url-pattern>/services/*</url-pattern>
    </servlet-mapping>

  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>
启动服务器,访问wsdl文档。如果访问成功说明接口发布成功

客户端代码生成:

使用jdk命令wsimport -s . -p cn.itcast http://localhost:8080/axis2Server/services/testService?wsdl生成客户端代码,也可将此语句放置在自定义的bat文件中执行

客户端代码调用:(通过配置文件调用)

新建beanssss.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-3.0.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">
       <!-- 通过配置文件调用... 通过这种方式调用需要依赖一个接口... -->
       <jaxws:client id="itcast" address="http://192.168.9.12:8080/cxfspringweb/services/ipaddress?wsdl" serviceClass="com.baidu.config.IpAddressService">
       </jaxws:client>

       <jaxws:client id="weather" address="http://192.168.9.12:8080/cxfspringweb/services/weather?wsdl" serviceClass="cn.itcast.weather.Weather">
       </jaxws:client>

       <jaxws:client id="music" address="http://192.168.9.12:8080/cxfspringweb/services/music?wsdl" serviceClass="cn.itcast.music.Music">
       </jaxws:client>

</beans>

通过bean的方式调用:

package cn.itcast.spring.web;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import cn.itcast.music.Music;
import cn.itcast.weather.Weather;

import com.baidu.config.IpAddressService;

/**
 *
 * 通过配置文件来调用webservice 服务...
 * @author Administrator
 *
 */
public class SpringConfigInvoke {
 /*public Weather weather;

 public Weather getWeather() {
  return weather;
 }

 public void setWeather(Weather weather) {
  this.weather = weather;
 }*/

 /**
  * @param args
  */
 public static void main(String[] args) {
  ApplicationContext context=new ClassPathXmlApplicationContext("beanssss.xml");
  //根据IP查询所在地
  IpAddressService addressService=(IpAddressService) context.getBean("itcast");
  String ipaddress=addressService.getAddressByIp("192.168.9.12");
  System.out.println(ipaddress);

  //我的天气
  /*SpringConfigInvoke springConfigInvoke = new SpringConfigInvoke();
  springConfigInvoke.weather();*/

  Weather weather = (Weather) context.getBean("weather");
  System.out.println(weather.bjWeather());

  //音乐人
  Music music = (Music) context.getBean("music");
  System.out.println(music.singer());
 }

 /*public void weather(){
   weather.bjWeather();
 }*/

}
时间: 2024-12-10 12:50:20

webservice发布服务:CXF及客户端调用的相关文章

搭建基于asp.net的wcf服务,ios客户端调用的实现记录

一.写wcf 问题: 1.特定的格式 2.数据绑定 3.加密解密 二.发布到iis 问题: 1.访问权限问题,添加everyone权限 访问网站时:http://localhost/WebbUploadSample/ZipUpload.aspx “/WebbUploadSample”应用程序中的服务器错误. -------------------------------------------------------------------------------- 访问被拒绝. 说明: 访问服

webservice发布服务:AXIS2及客户端调用

1.Axis2: 到官网下载axis2的压缩包. 解压后: 1.将lib文件下的jar包复制到项目中 2.在web-inf下创建services->META-INF->services.xml,并将压缩包中的services.list.version-1.7.4.aar复制到services文件夹下 3.编写services.xml文件,配置发布的接口,格式如下: <?xml version="1.0" encoding="UTF-8"?>

spring mvc + mybaties + mysql 完美整合cxf 实现webservice接口 (服务端、客户端)

spring-3.1.2.cxf-3.1.3.mybaties.mysql 整合实现webservice需要的完整jar文件 地址:http://download.csdn.net/detail/xuxiaoyu__/9868032 整合的过程其实很简单,通过简单的配置就可以,但是可悲的是 一堆问题都是由于jar缺失或者jar版本冲突引起的,所以附上全部jar文件 ↑↑↑ 发布webservice服务: 第一步:编写接口和实现类 PlcDataDetail.java 1 package test

webservice的服务端和客户端

package webservice; import javax.jws.WebService; import javax.xml.ws.Endpoint; /** * Created by Lenovo on 2017/11/23. */ @WebService public class Findservice { public String transferString(String word){ return "tansfer"+word; } public static voi

webservice发布问题,部署iis后调用不成功

我使用的环境win8.vs2010.IIS8.0 vs2010中创建的webservice中的方法可以正常调用,但是发布到IIS上后,asmx文件能正常访问, 但是进入方法后, 点击 "调用" 时就出现了问题.  无法返回正确的调用结果. 解决方法:对应的应用池,设置高级设置-->进程模型-->标识-->设置localsystem 设置后就可以了,本方法只供参考,我的问题是解决了,不知道还有没有其他问题.

C#开发WEBService服务 C++开发客户端调用WEBService服务

编写程序 http://blog.csdn.net/u011835515/article/details/47615425 遇到问题及解决方法: HTTP 错误 500.19- Internal Server Error 错误解决方法 http://www.jb51.net/article/28160.htm HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容. 如果不希望启用目录浏览,请确保配置了默认文档并且该文件存在. 使用 IIS 管理器启用目录

dubbo 服务端和客户端调用

下面是一种客户端和服务端的调用链,可能会走到其他分支,但是通过这一条链路,可以观察dubbo的整体脉络. 服务端: 客户端:

cxf+spring 客户端调用

一.下载 apache-cxf-2.0.4.zip 解压后 放置在 d:apache-cxf-2.0.4  : 二. 配置环境变量 path (可以再cmd 中 直接调用 cxf中的 命令) 在path最后添加 D:\apache-cxf-2.0.4\bin  ;我们需要 使用 bin下 wsdl2java 三 .创建 客户端工程  webService-client (默认的工作空间为 d:\workspace ) 打开 cmd  :操作如下   : d: cd workspace 打开工作空

CXF之客户端调用

一.返回类型为Map问题 cxf的restful实现已经实现返回类型为Map,不需要做任何的转换. 二.参数为Map问题 因为cxf不直接支持参数为Map情况,所以需要我们定义一个类型转换适配器 package com.winssage.base.module.frameworkimpl.security.util; import java.util.HashMap; import java.util.Map; import javax.xml.bind.annotation.adapters.