XFire中进行自定义异常

这里把Web服务端和客户端分开,用两个项目写

下面展示的是服务端代码

首先是web.xml和services.xml

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>XFireServlet</servlet-name> <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>XFireServlet</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping> </web-app> <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://xfire.codehaus.org/config/1.0"> <service> <name>XFireExceptionDemo</name> <namespace>http://www.jadyer.com/XFireExceptionDemo</namespace> <serviceClass>com.jadyer.server.HelloExceptionService</serviceClass> <implementationClass>com.jadyer.server.HelloExceptionServiceImpl</implementationClass> </service> </beans>

接着是Web服务端暴露的接口及其实现类

package com.jadyer.server; import com.jadyer.server.exception.MyException; public interface HelloExceptionService { public String getException(String message) throws MyException; } package com.jadyer.server; import com.jadyer.server.exception.MyException; import com.jadyer.server.exception.MyExceptionDetail; public class HelloExceptionServiceImpl implements HelloExceptionService { public String getException(String sss) throws MyException { if("".equals(sss)){ throw new MyException("参数不能为空", new MyExceptionDetail("XFire异常测试成功")); }else{ return sss; } } }

然后是我们的自定义异常的描述类

package com.jadyer.server.exception; import java.io.Serializable; /** * 异常描述类 * @see 必须要显式或隐式的提供默认构造函数 */ public class MyExceptionDetail implements Serializable { private static final long serialVersionUID = -6043027006141857552L; private String message; public MyExceptionDetail(){} public MyExceptionDetail(String message){ this.message = message; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } }

最后是我们的自定义异常的处理类

package com.jadyer.server.exception; import org.codehaus.xfire.fault.FaultInfoException; /** * 处理异常的基本类 * @see 这里主要继承了FaultInfoException类 */ public class MyException extends FaultInfoException{ private static final long serialVersionUID = -9010056196582741518L; private MyExceptionDetail med; public MyException(String message, MyExceptionDetail med){ super(message); this.med = med; } public MyExceptionDetail getFaultInfo(){ return med; } }

Web服务端代码,至此完毕

对于客户端,我们另建一个Java Project

package com.jadyer.client; import java.net.MalformedURLException; import org.codehaus.xfire.client.XFireProxyFactory; import org.codehaus.xfire.service.Service; import org.codehaus.xfire.service.binding.ObjectServiceFactory; import com.jadyer.server.HelloExceptionService; import com.jadyer.server.exception.MyException; /** * 客户端的对自定义异常的测试类 * @see 需要用到XFire 1.2 Core、HTTP Client Libraries两个类库 * @see 此时假设Web服务端已经提供了接口以及自定义异常的描述类和处理类 */ public class ExceptionClient { private static final String URL = "http://127.0.0.1:8080/XFire_Exception/services/XFireExceptionDemo"; private static final String namespace = "http://www.jadyer.com/XFireExceptionDemo"; public static void main(String[] args) { Service serviceModel = new ObjectServiceFactory().create(HelloExceptionService.class, null, namespace, null); try{ HelloExceptionService client = (HelloExceptionService)new XFireProxyFactory().create(serviceModel, URL); String result = client.getException("这是我进行异常测试时使用的字符串消息"); //此时不会出现异常 System.out.println(result); client.getException(""); //此时将会出现异常 }catch(MalformedURLException e){ e.printStackTrace(); }catch(MyException e){ e.printStackTrace(); System.out.println(e.getFaultInfo().getMessage()); } } }

然后运行ExceptionClient类,控制台若输出如下信息,则测试成功

这是我进行异常测试时使用的字符串消息 com.jadyer.server.exception.MyException: 参数不能为空 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:494) at org.codehaus.xfire.client.ClientFaultConverter.processFaultDetail(ClientFaultConverter.java:57) at org.codehaus.xfire.client.ClientFaultConverter.invoke(ClientFaultConverter.java:32) at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131) at org.codehaus.xfire.client.Client.onReceive(Client.java:424) at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:139) at org.codehaus.xfire.transport.http.HttpChannel.send(HttpChannel.java:48) at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26) at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131) at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:79) at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:114) at org.codehaus.xfire.client.Client.invoke(Client.java:336) at org.codehaus.xfire.client.XFireProxy.handleRequest(XFireProxy.java:77) at org.codehaus.xfire.client.XFireProxy.invoke(XFireProxy.java:57) at $Proxy0.getException(Unknown Source) at com.jadyer.client.ExceptionClient.main(ExceptionClient.java:27) XFire异常测试成功

XFire中实现WS-Security时出现的异常及原因 XFire中实现WS-Security时出现的异常及原因: 1.缺包,在客户端添加xalan.jar [code="java"] Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/xml/utils/URI$MalformedURIException at org.apach... 阅读详情

相关推荐

xfire自定义参数名

近期在做多个应用交互系统,其中数据交互采用了webservice的方式,说到webservice项目中不得不用到xfire这个框架,有了它我们几乎不用写代码,就可以很快速的创建自己的webservice但在使用的过程中遇到一些小细节上的问题:就是在写webservice接口的时候,通常大家都会定义一些方法的参数,但是根据xfire的xsd文件描述情况来看,它的参数命名通常是in0,in1等等,依次...

iteye_3489的博客 369

xfire 与 spring

<br />xfire 释疑:<br />JSR 181 --指注释符方式定义webservice<br />JAXB 2.0 - 配置文件<br /> <br />XFire中的安全验证and自定义WSDL文档的参数名<br />http://blog.csdn.net/jadyer/archive/2010/12/22/6092308.aspx<br /> <br /><?xml version="1.0" encoding="UTF-8"?> <mappings> <mapping> <!

399

XFire客户端解析服务端返回List

系统JDK:1.4 服务端方法如下: /* * 获取项目列表,新建 */ public List getProjectList() { /* 构造sql语句 */ StringBuffer sb = new StringBuffer(); sb .append("select tpbi.ID as projectId, tpbi.PROJECT_NAME as proje

成长是一个持续的过程 2305

XFire初学的一些小心得

最近由于项目的需要,学习了XFire。觉得XFire的开发真的很简单方便,但是其中也遇到了不少的问题,列于下: 1. 遇到了这样的异常 [code="java"]java.lang.SecurityException: class "org.springframework.core.AttributeAccessorSupport"'s signer information do...

一天到晚游泳的鱼 195

java webservice工具_WebServiceUtils工具类(xfire)

import org.apache.commons.lang.ArrayUtils;import org.codehaus.xfire.client.Client;import org.codehaus.xfire.transport.http.CommonsHttpMessageSender;import java.net.URL;import java.util.Map;public clas...

weixin_35411439的博客 691

Xfire的aegis绑定方式配置小结

首先说明,aegis为XFire默认的绑定方式,何时需要绑定? 当使用JDK1.4时,或者对JDK1.5的范型和注释不是很熟悉的情况下,当遇到需要映射POJO或配置WebService接口方法返回类型(如集合类型)时,需要进行绑定,此时aegis的绑定为建立.aegis.xml的文件。 1.当封装的接口类中,某方法返回集合类型时,aegis的绑定方式: 例如,需要将以下接口封装 J...

weixin_30735391的博客 506

Spring4.x集成xfire1.26 问题汇总

问题1: nested exception is java.lang.IncompatibleClassChangeError: class org.springframework.core.type.classreading.ClassMetadataReadingVisitor has interface org.springframework.asm.ClassVisitor as supe...

Gblfy_Blog 2933

XFIRE 异常

Exception in thread "main" org.codehaus.xfire.XFireRuntimeException: Could not invoke service.. Nested exception is org.codehaus.xfire.fault.XFireFault: Could not read XML stream.. Nested exception is...

lvpeng8357的专栏 702

在Eclipse中基于XFire的服务及客户端

随着SOA的广泛普及,很多人开始学习一些基于soap的webService技术,xfire正是其中非常优秀的代表。虽然xfire已经停止更新,并被并入cxf项目中,但是它的简单易用,能够使开发速度和学习成本大大降低,并且可以和Spring完美结合。所以就目前来说xfire仍然是小型WebService项目的一个非常好的选择。下面我们就针对xfire在eclipse中的使用来进行讲解,希

严海的专栏 7926

XFire webservice 异常,请高手帮我看一下,谢谢

org.codehaus.xfire.fault.XFireFault: Couldn't get property {http://jgjxb.system.nettrack3.yinbo.cc}bbnkno from bean [Ljava.lang.Object;@de2dcb. Ne...

chenlongyjjc2014的博客 257

eclipse下使用xfire 全记录

  最近在做一个基于soa的简单的学籍管理,接触到xfire这个开发的工具。xfire能够简化web service的开发过程,让程序员从底层soap,wsdl解脱出来。下面就简述我测试xfire的开发过程。测试环境:eclipse3.2+tomcat5.5+xfire1.1构建web服务端(参考http://blog.csdn.net/sxqem/archive/2006/06/05/774

猫鱼酱 4995

xfire.typeMappingRegistry 异常解决

<br />xfire1.2.6开发的webservice在WebSphere下运行时报此异常<br />[09-10-21 16:55:17:114 CST] 0000001e ContextLoader E org.springframework.web.context.ContextLoader initWebApplicationContext Context initialization failed<br />org.springframework.beans.factory.BeanCreat

rick_123的专栏 6873

引入xfire-all.jar后导致sping配置异常

&#13; 在工程引入xfire-all.jar 后spring 启动时出现配置异常 原因:xfire-all.jar 中存在spring低版本的jar 包,发生了冲突 解决:在引入时排除低版本的spring &lt;dependency&gt; &lt;groupId&gt;org.codehaus.xfire&lt;/groupId&gt; &lt;ar...

weixin_42677387的博客 457

xfire异常 Index: 0, Size: 0

exception is org.codehaus.xfire.fault.XFireFault: Index: 0, Size: 0 org.codehaus.xfire.fault.XFireFault: Index: 0, Size: 0         at org.codehaus.xfire.fault.Soap11FaultSerializer.readMessage(Soap1...

nbaertuo的专栏 906

xfire实现CS架构的服务发布

1.新建普通JAVA工程,导入XFIRE用户库和xfire-all-1.2.6.jar.新建服务类接口IHelloService,接口实现类HelloService(实现接口方法public String hello(String name))2.模拟服务发布类:EmbeddedService,其内容如下: public boolean start(){  ObjectServiceFactory sf=new ObjectServiceFactory();  Service service=sf.crea

mike_caoyong的专栏 888

xfire webservice抛出异常小结

通过myeclipse\xfire,简简单单两步建立webservice。 一、创建web service project,填写好相关信息,其中选择xfire组件等。其余按默认即可。 二、创建web service bean,这时,工程文件里会多出service.xml的配置文件。 就这两步,其实正常的话,应该能够发布成功。我说的是正常,是只myeclipse中包括所需的包是完整的。现在有个

我不是肖邦 1383
上一篇: XFire中进行文件下载
下一篇: XFire中的Handler处理
tanzi21
博客等级 码龄18年 2粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值