关闭

CXF动态客户端调用webservice实例

1025人阅读 评论(0) 收藏 举报

使用CXF实现WebService,并在客户端实现动态调用编写服务器注意事项


注意 :不要指定
@SOAPBinding(style=Style.RPC, use=Use.LITERAL) 因为cxf 不支持:rpc、encoded,在动态客户调用过程。

cxf webservice开发资料,网上一搜大部分是类同的,跟官方的例子一样。
都是简单的静态调用例子。对动态调用的资料以及错误很少。本人被折腾了不行的情况下,
在一哥们的博客  http://hi.baidu.com/flierssp/item/2de0745c1afc1f3b32e0a96f 中看到动态调用不支持RPC才恍然大悟。
服务器端:
package com.rodjson.cxf;

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

@WebService
/*@SOAPBinding(style=Style.RPC, use=Use.LITERAL) 注意 :如果要动态调用一定要注释掉这句代码*/
public interface HelloWorld {
 @WebMethod
 String sayHi(@WebParam(name="text") String text);
 }
package com.rodjson.cxf;
---HelloWorldImpl---
import javax.jws.WebService;

@WebService(endpointInterface="com.rodjson.cxf.HelloWorld",
   
  serviceName="HelloWorld" )
public class HelloWorldImpl implements HelloWorld {
    
           public String sayHi(String text) {
            System.out.println("sayHi called");     
            return "Hello " + text;
          }
          
}

部署:
package com.rodjson.cxf;

import javax.xml.ws.Endpoint;

public class webServiceApp {
 public static void main(String[] args) {
  System.out.println("web service start");
  HelloWorld implementor = new HelloWorldImpl();
  String address = "http://localhost:8080/helloWorld";
  Endpoint.publish(address, implementor);
  System.out.println("web service end");
 }

}
至于部署的方法网上很多,我就不提了,重点是动态客户端调用以及错误的识别

package com.rodjson.cxf;

import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;

public class ClientObj {
public static void main(String[] args) {
 JaxWsDynamicClientFactory  factory =JaxWsDynamicClientFactory.newInstance();
    Client client =factory.createClient("http://localhost:8080/cxf/services/HelloWorld?wsdl");
    try {
     Object[] obj =client.invoke("sayHi","xiao");
  System.out.println("resp:"+obj[0]);
 } catch (Exception e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
}
}

错误如下:
2012-5-23 20:53:34 org.apache.cxf.common.jaxb.JAXBUtils logGeneratedClassNames

信息: Created classes:

javacTask: 无源文件

用法: javacTask <options> <source files>

-help 用于列出可能的选项

2012-5-23 20:53:34 org.apache.cxf.endpoint.dynamic.DynamicClientFactory createClient

严重: Could not compile java files for http://127.0.0.1:9082/CrmWeb/services/CrmInterServer?wsdl.

0
0
查看评论

CXF动态客户端调用webservice实例

使用CXF实现WebService,并在客户端实现动态调用编写服务器注意事项 注意 :不要指定 @SOAPBinding(style=Style.RPC, use=Use.LITERAL) 因为cxf 不支持:rpc、encoded,在动态客户调用过程。 cxf webservice开发资...
  • RodJohnsonDoctor
  • RodJohnsonDoctor
  • 2013-07-31 14:38
  • 30134

CXF动态客户端调用webservice实例

使用CXF实现WebService,并在客户端实现动态调用编写服务器注意事项 注意 :不要指定 @SOAPBinding(style=Style.RPC, use=Use.LITERAL) 因为cxf 不支持:rpc、encoded,在动态客户调用过程。 cxf webservic...
  • cl1107056481
  • cl1107056481
  • 2015-02-24 19:19
  • 353

cxf错误

严重: null java.lang.AbstractMethodError: javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava/lang/String;Z)V at com.sun.xml.bind.v2.util.XmlFact...
  • a243932069
  • a243932069
  • 2014-09-15 15:27
  • 6100

CXF整合Spring发布WebService实例

一、说明: 上一篇简单介绍了CXF以及如何使用CXF来发布一个简单的WebService服务,并且介绍了客户端的调用。 这一篇介绍如何使用CXF与spring在Web项目中来发布WebService服务,CXF版本为3.1.4 ,Spring版本为4.1.7 ,JDK版本 1.7 ,Tomcat 7...
  • kris234seth
  • kris234seth
  • 2016-01-14 14:05
  • 6378

使用CXF做webservice整合现有项目的例子

从网上看了很多CXF的资料,大部分都是单独的作为一个webservice项目,对于在现有的spring项目上提供webservice服务的例子基本没有找到。 我做的这个例子是介绍怎么把cxf整合到现有的spring项目中,现在只做到可以传简单的字符串和JAVABEAN,复杂的以后研究。
  • zczzsq
  • zczzsq
  • 2013-09-08 00:34
  • 10205

CXF动态客户端调用webservice实例

CXF动态客户端调用webservice实例
  • zhejingyuan
  • zhejingyuan
  • 2016-04-25 14:43
  • 1249

WebServices CXF开发常见异常及解决方法

======================================================异常1================================================================= 2011-7-14 9:55:15 org.ap...
  • z69183787
  • z69183787
  • 2014-06-30 11:25
  • 22420

weblogic上部署CXF系统问题客户端

服务端环境:Weblogic 11g                       CXF 2.6             &#...
  • tomatulip
  • tomatulip
  • 2014-08-26 16:21
  • 685

CXF客户端开发--动态调用webservice

之前关于webservice的文章中已经介绍了CXF JAX-WS proxy客户端模式。JAX-WS proxy模式需要在客户端使用wsdl2java生成代理接口,这种方式相对于动态调用,其效率相对较高。但是前期的工作量比较大,有时我们知道一个服务接口URL、方法名、入参schema、返回参数sc...
  • lkx94
  • lkx94
  • 2014-12-09 13:55
  • 1795

使用CXF实现WebService,并在客户端实现动态调用

WebService实现 1、 整个项目使用CXF来实现,在实现的过程中,在MyEclipse中对CXF下lib中的所有jar文件通过引入外部包来处理。 2、 在MyEclipse6.5中可以实现服务器端和客户端,但是客户端在使用wsdl进行动态调用的过程中总是报错,最后使用MyEclipse9...
  • gm_163
  • gm_163
  • 2013-05-31 17:43
  • 1547
    个人资料
    • 访问:12014961次
    • 积分:66902
    • 等级:
    • 排名:第38名
    • 原创:675篇
    • 转载:2296篇
    • 译文:0篇
    • 评论:558条
    文章分类
    文章存档
    最新评论
    计算流量