cxf文件|CXF解析svcwsdl文件成java格式

|

1. xcf格式图片怎样转换为png格式

可以在GIMP软件里面转换,选择[文件]-[导出为],选择png格式就可以(不是另存为),快捷键win:control+shift+E;mac:command+shift+E。

2. SpringBoot+CXF 实现简单的webservice,并支持Basic验证

CXF内置了很多拦截器,大部分默认添加到拦截器链中,有些拦截器也可以手动添加,如CXF的日志拦截器。如果需要自定义拦截器,只要继承AbstractPhaseInterceptor或者AbstractPhaseInterceptor的子类(如AbstractSoapInterceptor)

如果是传统的spring+cxf 项目,拦截器的写法是一样的,只是发布和配置的方法在cxf的配置文件的xml中进行

WSDL 地址: http://localhost:8080/SpringBootDemo_eclipse/soap/ihelloService?wsdl

CXF 自动编译解析的客户端

客户端basic 认证调用

3. cxf 文件上传

建议转码上传,首先将文件转成字节数据,再转成16进制字符表示形式,将最后生成的字符串作为参数调用cxf方法,cxf上在通过解码还原回文件

4. CXF解析svcwsdl文件成java格式

1.安装JDK1.5,配置系统环境变量:下载安装JDK后,设置环境变量:JAVA_HOME=C:/ProgramFiles/Java/jdk1.5.0_02Path=%Path%;%JAVA_HOME%/bin(这里的%Path%指你系统已经有的一系列配置)CLASSPATH=%JAVA_HOME%/lib2.下载CXF,配置系统环境变量:CXF下载地址http://cxf.apache.org/download.html配置环境变量:CXF_HOME=E:WebServiceCXFapache-cxf-2.1.1apache-cxf-2.1.1(以我的目录为例)PATH后追加上“;%CXF_HOME%in”在cmd命令行中输入wsdl2java如果显示其用法表示配置好了。3.运行命令是:wsdl2javad:documentwebservicehello.wsdl(wsdl的路径)4.如果没有报错就表示执行成功了,但是执行成功后的java文件生成到什么地方了?系统没有提示,当时我就用了一种最笨的方法来找,在整个电脑里面搜索才找到的,后来我才发现了规律,就是你敲入命令的时候,所处的路径,肯定就是你文件生成的地方,我当时是cmd直接进入的,路径是C:,所以生成的文件也在这个目录下。5.新建工程,将生成的java文件和所需要的jar包导入即可。

参考地址:

http://radio123.iteye.com/blog/1134267

5. 如何使用CXF将 wsdl 文件变成java文件

用myeclipse将wsdl文件生成java代码:1、选择新建的工程后,点击右键,选择“Run As”->“Run”,如下图所示:2、弹出如下窗口:3、 在上图中,左边选择“Java Application”后,点击左上角的新增“”按钮new configuration,页面如下图所示:4、在上图中,将“Include libraries when searching for a main class” 勾上,而后点击“Main class”右边的“Search”按钮,弹出窗口如下图所示:5、在上图中输入WSDL2Java后,查找到axis这个jar包中对应类,点击“OK”按钮,此时主窗口如下图所示:6、在上图中点击“Arguments”页签,Arguments里把要生成的web service URI或wsdl文件写进去,最后点run。在下图中输入的是wsdl文件的路径: src/wsdl/acd_accessCode_interface.wsdl、src/wsdl/acd_accessCode_service.wsdl:7、生成的java代码如下:

6. .cxf是什么文件格式在scifinder搜索结构式需要用到

以前的客户端版,和现在的网络版都带有绘图的工具,把结构画进去保存时就是cxf文件,可惜在chemdraw打不开

7. cxf在转换wsdl文件文件时报错,找不到指定的文件

你的wsdl文件中需要qrySPFeeDetailInfoReq.xsd这个文件呗放到一个文件夹下即可 如果没有 说明你这个wsdl是不完整的

8. .cxf是什么文件格式

cxf文件是音频文件 将后缀改成MP3可直接播放

9. cxf怎样提高webservice性能,及访问速度调优

1、 启用FastInfoset(快速信息集)webservice的性能实在是不敢恭维。曾经因为webservice吞吐量上不去,对webservice进行了一些性能方面的优化,采用了FastInfoset,效果很明显,极端条件下的大数据量传输,性能提高60%,他可以减少传输成本,序列化成本和xml解析成本。Cxf提供了FastInfoset协商机制,实现类见org.apache.cxf.feature.FastInfosetFeature,在bus中启用如下配置:<cxf:features><cxf:fastinfoset force="false"/></cxf:features>Force=false表示服务端和客户端第一次通信时会协商(通过检查标准的HTTP头的Accept字段,值为MIME类型的application/fastinfoset)是否启用FastInfoset支持,如果客户端不支持,则不启用快速信息集。需要在pom中添加依赖: <dependency> <groupId>com.sun.xml.fastinfoset</groupId> <artifactId>FastInfoset</artifactId> <version>1.2.9</version> <type>jar</type> <scope>compile</scope> </dependency>FastInfoset参考:http://java.sun.com/developer/technicalArticles/xml/fastinfoset/client和service端都要配置2、 启用gzip压缩支持客户端和服务器端是否使用Gzip压缩,也是基于http协议协商的(检查请求header 中是否有Accept-encoding:gzip)。但是这里需要仔细权衡下。对于小数据量,启用gzip压缩支持是吃力不讨好的行为,数据量很小的时候,gzip压缩结果不明显,还浪费cpu。我们需要权衡数据大小,按照经验设置threshold为10*1024byte。在bus中启用如下配置:<bean class="org.apache.cxf.transport.common.gzip.GZIPFeature "><property name="threshold"><value>10240</value></property></bean>官方文档指定是是配置org.apache.cxf.transport.http.gzip.GZIPFeature,但是这个类会找不到,可能是官方文档年久失修,造成一些混乱。官方文档中也没提示指定threshold,请参考GZIPFeature源代码。参考http://cxf.apache.org/docs/featureslist.html3、 使用slf4j代替cxf默认日志组件CXF 默认使用java.util.logging作为日志打印组件,其性能我就不过多评价,也不太便于我们做统一日志管理。目前系统使用的slf4j作为日志打印组件,替换如下:在classpath中加入META-INF/cxf/org.apache.cxf.Logger文件,文件内容为org.apache.cxf.common.logging.Slf4jLogger4、 测试中启用日志bus中加入<cxf:logging/>,请在测试环境中启用有助于debug补充:1、如何自定义返回码:请求在service中处理遇到异常后,会调用请求链中所有拦截器的handleFault方法,参考PhaseInterceptorChain#unwind,然后判断请求是否单向请求,如果不是,则构建异常请求链,并构建异常message对象,调用异常请求链中的handleMessage 方法(参考:)JAXWSMethodInvoker转发soap请求到指定对象的方法,如果在请求处理失败,调用updateHeader方法,把请求时的soap header放入返回header中。但是不同通过继承JAXWSMethodInvoker来实现清除异常时soap header也返回给客户端的问题,因为JAXWSMethodInvoker没有采用注入的机制(JaxWsServerFactoryBean#createInvoker)也没有chain.异常时,会由这些拦截器处理返回请求: setup [] prepare-send [MessageSenderInterceptor, Soap11FaultOutInterceptor] pre-stream [LoggingOutInterceptor, StaxOutInterceptor] pre-protocol [WebFaultOutInterceptor]write [SoapOutInterceptor]拦截器初始化类我们可以在异常链中加入清理soap header的拦截器,清理掉在系统异常时soapheader中有信息的问题。返回错误状态码,在执行Soap11FaultOutInterceptor拦截器中被写死。 message.put(org.apache.cxf.message.Message.RESPONSE_CODE, new Integer(500));为了使返回数据中有错误码,需要在Soap11FaultOutInterceptor后面加入拦截器2、在项目测试时遇到一个报错invalid LOC header (bad signature),这个问题是因为jar包损坏照成的,虽然构建路径中有这个jar,但是还是会出现loadClass失败,清理maven 本地仓库目录的jar,修改pom(比如加上一空行)让m2e重新加载。3、Cxf中有一个很不错的特性,支持javascript访问soap webservice,客户端访问http://localhost:8080/cxf/HelloWorld?js类似的请求,会生成javascript 客户端,js编程时就可以使用此客户端提供的对象,启用此功能需要在引入<import resource="classpath:META-INF/cxf/cxf-extension-javascript-client.xml" />并且在依赖中加入: <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-javascript</artifactId> <version>2.4.1</version> <type>jar</type> <scope>compile</scope></dependency>

10. 6、CXF与spring的整合(WebService的整合)

web.xml

说明: 这里主要配置了 spring 的配置文件地址, spring 监听器、 CXF 核心控制器。

applicationContext.xml

说明:

在 spring 的配置文件中使用 jaxws:endpoint 元素来暴露 WebService ,这里有两种方式:

然后我们就可以将工程部署到 tomcat 中,在浏览器中使用 地址 http://localhost:8080/cxf_spring/myService 访问我们的 WebService 工程。

MyClient.java

注意: myService 指定我们的服务名字(在 web.xml 中配置),而 fkjava 指定服务提供者的地址(在 applicationContext.xml 中配置)。同时这种集成不好,因为将地址写死了,没有使用 spring 的注入方式。 我们看 HelloWorldWs.java 这个服务类:

可以看到其中的实际业务处理类还是使用的手工方法进行实例化,没有使用 spring 的注入方式。

在 spring 的配置文件中改变暴露 WebService 的方式:

说明: 加 # 号是为了让服务器知道这个名字不是一个类 ,而只是一个 id 。 然后改造 HelloWorldWs.java 服务类:

然后我们再次使用之前的地址进行访问,发现效果还是一样的。

在上面配置的基础上进行添加,在 applicationContext.xml 中:

此时,和以前一样我们需要在客户端(工程 Call_CXFSpring )那边加上拦截器,添加上用户名和密码的头,然后对服务器进行访问。以此来进行验证。客户端中我们运行类: MyClient.java

访问服务端。

传统的 SSH 项目中,一般在本地是有相关的数据的,但是有一种场景是我们需要调用别人的数据,但是别人的数据不可能让我们进行修改等操作,那么别人只会暴露一个 WebService ,而我们就需要去调用别人的 WebService 服务器。我们在访问别人时,只能得到 WSDL 文档。此时我们的项目中就不需要业务逻辑组件了,直接去调用别人的 WebService 的一个代理即可。

首先我们拷贝上面的工程,改名为 cxf_springClient ,然后需要增加 struts2 的相关 jar 包:

将原有的一些包删掉,留下权限包 org.fkjava.cxf.ws.auth 。然后我们启动工程 Auth_Server 提供远程服务。在 web 工程中生成相应的包及程序。

web.xml

说明: 这里我们不再需要 CXF 的 servlet 了,因为不需要业务类了,我们直接调用远程业务即可。同时配置 struts2 的核心控制器。

applicationContext.xml

说明: 这里我们同样不需要业务类了,但是需要配置远程业务代理类( serviceClass )。同时注意:不要将端口设置为8080,会冲突。可以看到我们使用 serviceClass 将接口配置进去,而这里的 id 不能随便写,要和 action 中定义的接口名一致。由于远程服务器设置了权限拦截,所以这里使用过滤器将用户名和密码设置到 wsdl 文档的头中。然后在这个类中我们需要使用 execute 方法去获取相应的数据。

struts.xml

ListCatsAction .java

说明: 此时我们就可以使用地址 http://localhost:8080/cxf_springClient/listCats 进行访问了,当然会报找不到 jsp 的错误。

content/listCats.jsp

说明: 此时访问就可以看到


赞 (0)