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

shi*_*miz 5 java soap web-services cxf

我遇到了以下错误:

java.util.concurrent.ExecutionException:javax.xml.ws.soap.SOAPFaultException:解组错误:超出文本大小限制(134217728)

它只是表示通过 SOAP Web 服务存在最大文本大小限制。根据CXF 服务安全文档,可以在 CXF.xml 文件中定义以下属性:

org.apache.cxf.stax.maxTextLength

我的问题是怎么做?应该写在文件的什么地方?

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

小智 1

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

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

首先,在WEB-INF/中创建一个名为webservice-conf.xml的文件:

 <?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>
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

这对我有用