Java CXF如何设置原因标记的区域设置?

Java CXF如何设置原因标记的区域设置?,java,web-services,cxf,Java,Web Services,Cxf,我有一个基于CXF的web服务。 当我使用CXF soap故障时,默认情况下,我得到的原因标记格式如下: <soap:Reason> <soap:Text xml:lang="en">Le service n’est pas accessible.</soap:Text> </soap:Reason> 服务不方便。 我想要的是如何更改原因文本的区域设置 到其他语言?ex:fr ie:我怎样才能得到以下结果:

我有一个基于CXF的web服务。 当我使用CXF soap故障时,默认情况下,我得到的原因标记格式如下:

     <soap:Reason>
        <soap:Text xml:lang="en">Le service n’est pas accessible.</soap:Text>
     </soap:Reason>

服务不方便。
我想要的是如何更改原因文本的区域设置 到其他语言?ex:fr ie:我怎样才能得到以下结果:

<soap:Reason>
        <soap:Text xml:lang="fr">Le service n’est pas accessible.</soap:Text>
     </soap:Reason>

服务不方便。
问题已解决:)

经过数小时的调试,我发现
是在拦截器
org.apache.cxf.binding.soap.interceptor.Soap12FaultOutInterceptor中硬编码的
事实上,语言的值是由内部类
org.apache.cxf.binding.soap.interceptor.soap12faultoutiterceptor.soap12faultoutiterceptorinternal中定义的方法
getLangCode()
计算的 下面是用于获取语言的方法的代码,您可以看到它几乎将语言硬编码为en

  private String getLangCode() {        
            String code = LOG.getResourceBundle().getLocale().getDisplayLanguage();
            if (StringUtils.isEmpty(code)) {
                return "en";
            }
            return code;
            }
我使用的CXF版本是
2.2.6
,我不得不使用它,因为旧系统只支持java 5, 但是我发现这个问题在版本
2.6.7
在此版本中,一个新属性:
lang
已添加到超级类
org.apache.cxf.interceptor.Fault
,以指定语言。 在soap错误的代码中,只需执行以下操作:

fault.setMessage(reason);
fault.setLang("fr");
就这样:)