cxf 学习

最近在学习java,想搞j2ee的开发,以及手机网站的开发。

IDE:Intellij IDEA 13

JDK: 1.7

server:Tomcat 8.0.15

System:windows 7 X64

总结:

1:搞清楚,IDEA中,什么是插件,哪些是插件!

2:CXF中,在开发WebService的过程中,不要单独的针对helloWord.java(implement interface IHelloworld) 进行compile(ctrl +shit +F9),保险期间,还是直接执行build project 。因为只是单独的对helloworld.java进行编译的话,IHelloWorld.java时没有编译的,所以总是会提示:找不到符号 之类的Error!

3:不同版本之间的CXF还是不同的。刚开始,绕了很大的弯路。下载了CXF3.0.2 在IDEA中,进行webservice插件引用时,总是引用不成功,搞了半天,猜想可能是CXF版本太高的问题,就将其降低到CXF2.7.13 ,中间还是出现了或多或少的问题,就干脆降到了2.6.,当时官网的最低版本。

在进行Restful WebSErvice 开发时, 单独开发挺好,在引入springframwork时,开始报 "找不到对应的bean,"是springframework中的问题,这不是扯吗?于是,就上网找答案,for a long time.....总算是找到了,说是包冲突的问题,其实看到问题的时候,也大概能猜到是包冲突的问题,但是不知道是哪个jar冲突啊?看到了CXF 2.7.0的类似报错,说是,有个 cxf-services-ws-discovery-service-2.7.0.jar 跟springframework中的包冲突,但是悲剧的是,我在我项目引用的CXF2.6
包中没有找到对应的jar包啊,当时就吐血3L;干脆升级项目的CXF版本。就将其升级到了CXF 2.7.13,运行时果断不报错,挺顺利,心里那个得瑟啊!赶紧测试其他功能啊!

不测试不要紧,一测试,哎呀我的妈啊,你不带这样玩我的吧,怎么总是这样啊,原来访问 http://localhost:8080/services/rest1/list 很轻松的事情,怎么突然之间就报错了呢?报

org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor processRequest WARNING: No root resource matching request path” ,真是一波未平一波又起啊!怎么那么曲折呢!

不能灰心,打起精神,看源代码吧,一看之下发现,有个地方还真的可能是问题。

@Path(value="sample")
public interface RestSample {

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    @Path("/request/{param}")
    public String doRequest(@PathParam("param") String param,  @Context HttpServletRequest servletRequest, @Context HttpServletResponse servletResponse);

    <span style="color: rgb(204, 102, 204); font-family: Verdana, Georgia, serif; font-size: 14px;">@GET</span>
    <span style="color: rgb(204, 102, 204); font-family: Verdana, Georgia, serif; font-size: 14px;">@Produces(MediaType.TEXT_PLAIN)</span>
    public String doGet();

    @GET
    @Path("/bean/{id}")
    @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
    public User getBean(@PathParam("id") int id);

如上面贴出的代码部分,@Path参数还是有差异的,其中fuction doGet方法或函数(C# 叫方法)没有Path参数,在进行请求的时候,可以使用默认的/sample进行请求,如“http://localhost:8080/services/rest1/sample”,但是,请求其他的方法时,就不用默认的Path,用自己的path参数来请求,但是用了CXF2.7.13 后,你请求的时候,就不行了,就会报什么找不到对应的请求路径了。于是,就顺手调整了一下,测试呗,嘿,还别说,还真有用,直接就搞定了。

看来 Interface 上面的Path 参数意义不同, 2.7.13将value="/sample"当成了父路径;而 2.6是将其当成默认路径了。

而且,cxf-servlet.xml和applicationContext-server.xml基本上差不多,可以进行替代,我也测试了一下,暂时没有发现问题!

时间: 2024-10-27 19:13:39

cxf 学习的相关文章

CXF学习(2) helloworld

0.新建一个项目取名wsserver. 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/xsd/maven-4

CXF学习记录

1 apache CXF入门 1.1 下载 官网:cxf.apache.org 下载CXF的开发包: Apache CXF = Celtix + Xfire 支持多种协议: SOAP1.1,1.2 XML/HTTP CORBA(Common Object Request Broker Architecture公共对象请求代理体系结构,早期语言使用的WS.C,c++,C#) 并可以与Spring进行快速无缝的整合 灵活的部署:可以运行在Tomcat,Jboss,Jetty(内置),IBMWS,Be

几种流行Webservice框架性能对比

1摘要 开发webservice应用程序中离不开框架的支持,当open-open网站列举的就有很多种,这对于开发者如何选择带来一定的疑惑.性能Webservice的关键要素,不同的框架性能上存在较大差异,而当前在官方网站.网络资料中可以方便的找到各自框架的介绍,但是很少有针对不同框架性能测试数据.本文选择了比较流行几个框架: Apache Axis1.Apache Axis2.Codehaus XFire.Apache CXF.Apache Wink.Jboss  RESTEasy.sun JA

cxf的一些学习体会

开始看cxf的契机是老师上课讲到了web service 课后还留了个作业,写个简单的demo 然后就开始看.说实话对软件高层一直不怎么感冒,一直觉得那些框架是很简单的事情,基础的理论是相通的.但是既然有作业就看一看呗.花了两天(其实不超过十个学时)看了cxf和maven的一些内容.好了. 怎么去学习一项新的技术呢? 看官方文档加google. 这大概是最快的方式了,官方文档上有各种guide和cxf这种技术的应用范围,特点等等 http://cxf.apache.org/docs/index.

webService学习之路(三):springMVC集成CXF后调用已知的wsdl接口

webService学习之路一:讲解了通过传统方式怎么发布及调用webservice webService学习之路二:讲解了SpringMVC和CXF的集成及快速发布webservice 本篇文章将讲解SpringMVC+CXF环境下,怎么调用其他系统通过webService方式暴露出来的接口 ① 为避免怀疑同一个项目中调用本项目的接口,这里我新打开一个eclipse通过最原始的方式发布了一个webservice并启动保证可以被访问 打开浏览器确认可以被访问 ②进入CXF/bin 利用wsdl2

Web Service学习之六:CXF解决无法处理的数据类型

CXF不能够处理像Map复杂的数据类型,需要单独转换处理. 总体思路:创建一个转换器和一个对应的可以处理的数据结构类型,将不能处理的类型转换成可以处理的类型: 步骤: 一.创建一个可以处理的类型 举例:要转换Map<String,User> package ws; import java.util.List; public class StringUser { public static class Entry { private String key; private User value;

WebService学习总结(四)——调用第三方提供的webService服务,使用cxf

package webservice; import javax.xml.namespace.QName; import org.apache.cxf.endpoint.Client; import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory; public class Test1 { public static void main(String[] args) throws Exception { JaxWsD

【Java EE 学习第81天】【CXF框架】【CXF整合Spring】

一.CXF简介 CXF是Apache公司下的项目,CXF=Celtix+Xfire:它支持soap1.1.soap1.2,而且能够和spring进行快速无缝整合. 另外jax-ws是Sun公司发布的一套开发WebService服务的标准.早期的标准如jax-rpc已经很少使用,而cxf就是在新标准jax-ws下开发出来的WebService,jax-ws也内置到了jdk1.6当中. CXF官方下载地址:http://cxf.apache.org/download.html 下载完成之后,解压开压

Web Service学习-CXF开发Web Service实例demo(一)

Web Service是什么? Web Service不是框架.更甚至不是一种技术. 而是一种跨平台,跨语言的规范 Web Service解决什么问题: 为了解决不同平台,不同语言所编写的应用之间怎样调用问题.比如.有一个C语言写的程序.它想去调用java语言写的某个方法. 集中解决:1,远程调用 2.跨平台调用 3,跨语言调用 实际应用: 1.同一个公司的新,旧系统的整合.Linux上的java应用,去调用windows平台的C应用 2,不同公司的业务整合.业务整合就带来不同公司的系统整合.不