总线属性设置被忽略
bus properties settings ignored
我有 cxf.xml 个文件:
<beans ....
<cxf:bus>
<cxf:features>
<cxf:logging/>
</cxf:features>
</cxf:bus>
</beans>
但是在一些操作中,我得到了错误:
org.apache.cxf.interceptor.Fault: Unmarshalling Error: Maximum Number of Child Elements limit (50000) Exceeded
我发现它可以被 org.apache.cxf.stax.maxChildElements 值覆盖。所以我首先尝试将 org.apache.cxf.stax.maxChildElements=120000 放入 gradle,在 IDEA 参数中,但没有用,所以我修改了我的 .xml 文件,如下所示:
<cxf:bus>
<cxf:features>
<cxf:logging/>
</cxf:features>
<cxf:properties>
<entry key="org.apache.cxf.stax.maxChildElements" value="120000"/>
</cxf:properties>
</cxf:bus>
但是 none 这行得通,我目前不知道为什么这个设置没有被注册。
我正在使用库 cxf-rt-frontend-jaxws 和 cxf-rt-transports-http 都在版本 3.2.7 .
如果当您说“IDEA 参数”时,您指的是这个框(标记为:程序参数)...
尝试启用修改选项 -> 添加 VM 选项
然后在标有 VM 选项的框中写入您的 VM 选项字符串。
尝试
-Dorg.apache.cxf.stax.maxChildElements=1000000
这可能有效也可能无效,具体取决于您所说的 IDEA 参数的含义。我已经让 IDEA 忽略了我试图通过工作中的“程序参数”框传递给 JVM 的许多选项。希望这可以解决您的问题。如果失败,我将尝试监控此线程。
您也可以尝试通过 java 代码进行配置。
您可以获得用于创建您的 Bus 实例 org.apache.cxf.endpoint.Client
:
YourActual service = //return instance of your @WebService class by defining address & interpreter;
Client client=ClientProxy.getClient(service);
client.getBus().setProperty(StaxUtils.MAX_CHILD_ELEMENTS,120000)
或者,如果您有端点实现者,那么您可以这样做:
Bus bus=BusFactory.getDefaultBus();
bus.setProperty(StaxUtils.MAX_CHILD_ELEMENTS,120000);
Object implementor = <Your service implementation class>;
EndpointImpl ep = (EndpointImpl) Endpoint.publish(yourendpoint, implementor);
ep.setBus(bus);
以上总线配置 psudo-code 来自 CXF doc。
我有 cxf.xml 个文件:
<beans ....
<cxf:bus>
<cxf:features>
<cxf:logging/>
</cxf:features>
</cxf:bus>
</beans>
但是在一些操作中,我得到了错误:
org.apache.cxf.interceptor.Fault: Unmarshalling Error: Maximum Number of Child Elements limit (50000) Exceeded
我发现它可以被 org.apache.cxf.stax.maxChildElements 值覆盖。所以我首先尝试将 org.apache.cxf.stax.maxChildElements=120000 放入 gradle,在 IDEA 参数中,但没有用,所以我修改了我的 .xml 文件,如下所示:
<cxf:bus>
<cxf:features>
<cxf:logging/>
</cxf:features>
<cxf:properties>
<entry key="org.apache.cxf.stax.maxChildElements" value="120000"/>
</cxf:properties>
</cxf:bus>
但是 none 这行得通,我目前不知道为什么这个设置没有被注册。
我正在使用库 cxf-rt-frontend-jaxws 和 cxf-rt-transports-http 都在版本 3.2.7 .
如果当您说“IDEA 参数”时,您指的是这个框(标记为:程序参数)...
尝试启用修改选项 -> 添加 VM 选项
然后在标有 VM 选项的框中写入您的 VM 选项字符串。 尝试
-Dorg.apache.cxf.stax.maxChildElements=1000000
这可能有效也可能无效,具体取决于您所说的 IDEA 参数的含义。我已经让 IDEA 忽略了我试图通过工作中的“程序参数”框传递给 JVM 的许多选项。希望这可以解决您的问题。如果失败,我将尝试监控此线程。
您也可以尝试通过 java 代码进行配置。
您可以获得用于创建您的 Bus 实例 org.apache.cxf.endpoint.Client
:
YourActual service = //return instance of your @WebService class by defining address & interpreter;
Client client=ClientProxy.getClient(service);
client.getBus().setProperty(StaxUtils.MAX_CHILD_ELEMENTS,120000)
或者,如果您有端点实现者,那么您可以这样做:
Bus bus=BusFactory.getDefaultBus();
bus.setProperty(StaxUtils.MAX_CHILD_ELEMENTS,120000);
Object implementor = <Your service implementation class>;
EndpointImpl ep = (EndpointImpl) Endpoint.publish(yourendpoint, implementor);
ep.setBus(bus);
以上总线配置 psudo-code 来自 CXF doc。