如何使用CXF.xml更改org.apache.cxf.stax.maxTextLength

时间:2016-10-18 09:02:03

标签: java web-services soap cxf

我遇到以下错误:

  

java.util.concurrent.ExecutionException:   javax.xml.ws.soap.SOAPFaultException:Unmarshalling Error:文本大小   限制(134217728)超过

简单地说,通过SOAP Web服务存在最大文本大小限制。 根据{{​​3}}文档,可以在CXF.xml文件中定义以下属性:

  

org.apache.cxf.stax.maxTextLength

我的问题是如何做到这一点?文件中的哪个位置应该写出来?

我是Java的新手,谢谢你的帮助

1 个答案:

答案 0 :(得分:1)

也许为时已晚......:)

对我来说,这适用于JBoss EAP 6.4:

首先,将文件nammed webservice-conf.xml 创建到 WEB-INF /

 <?xml version="1.0" encoding="UTF-8"?>
<jaxws-config xmlns="urn:jboss:jbossws-jaxws-config:4.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:javaee="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="urn:jboss:jbossws-jaxws-config:4.0 schema/jbossws-jaxws-config_4_0.xsd">
    <endpoint-config>
        <config-name>Sample</config-name>

        <property>
            <property-name>org.apache.cxf.stax.maxTextLength</property-name>
            <property-value>268435456</property-value>
        </property>


    </endpoint-config>
</jaxws-config>

您可以通过设置 org.apache.cxf.stax.maxTextLength 的属性值来指定最大大小,它是以字节为单位。

然后,在您的Web服务实现上,添加 @EndpointConfig 注释:

@WebService
@EndpointConfig(configName = "Sample", configFile = "WEB-INF/webservice-conf.xml") 
public class SampleService implements ISampleService {
}

请注意,注释中的 configName 值必须与XML文件中的 config-name 匹配。

这对我有用