我正在尝试为恶意xml设置CXF总线属性,如下所示
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:sec="http://cxf.apache.org/configuration/security"
xmlns:http="http://cxf.apache.org/transports/http/configuration"
xmlns:cxf="http://cxf.apache.org/core"
xsi:schemaLocation="
http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
http://cxf.apache.org/configuration/security http://cxf.apache.org/schemas/configuration/security.xsd
http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<cxf:bus>
<cxf:properties>
<entry key="org.apache.cxf.stax.maxAttributeSize" value="1"/>
<entry key="org.apache.cxf.stax.maxChildElements" value="1"/>
<entry key="org.apache.cxf.stax.maxElementDepth" value="1"/>
<entry key="org.apache.cxf.stax.maxAttributeCount" value="1"/>
<entry key="org.apache.cxf.stax.maxTextLength" value="1"/>
<entry key="org.apache.cxf.stax.maxElementCount" value="1"/>
</cxf:properties>
</cxf:bus>
</beans>
字符串
看起来CXF没有选择这些属性。上面的代码在spring上下文xml文件中。每当我做一个有多个元素和子元素的post请求时,CXF不会抛出任何错误。我使用的是CXF版本3.1.1
3条答案
按热度按时间xlpyo6sf1#
我已经在一个带有java 1.6和java 1.8的Tomcat服务器上用CXF 2.7.13和3.1.6测试了总线属性,在这两种情况下,XML请求都被阻塞了,就像文档中说的那样。
确保woodstook和stax库在类路径中。CXF将XML检查委托给这些库。如果服务器有它自己的XML解析器。它们必须在XML解析器服务器之前(如果可用)。检查server configuration guide
我将详细说明配置,以便您可以检查您的配置。
CXF课程(Ivy格式)
字符串
spring CXF配置
型
REST服务器示例
BookService.java
型
Book.java
型
请求已测试
型
收到错误
型
如果删除
<cxf:bus>
部分,将应用CXF默认值,并处理XML示例型
sd2nnvve2#
在cxf 3.2.4中,在总线级配置对我来说根本不起作用。在端点级配置之后,一切都像魔法一样工作:
字符串
mgdq6dx13#
如果有人在使用CXF 4.0.2 JAXWS独立客户端
javax.xml.stream.XMLStreamException: Maximum Element Depth limit (100) Exceeded
时寻求修复异常,这里留下另一个解决方案。字符串
不幸的是,通过
factory
设置该属性并不能解决这个问题。所以如果有比全局作用域更好的方法,我很乐意编辑这个答案。