我正在使用here描述的技术通过部署到JBoss的XML文件在JNDI树上注册字符串值。
这适用于我的系统常量(URL等)。但是,我也尝试注册已编码为Base64字符串的文件的内容。该文件相当大(大约400k),因此生成的字符串非常长。
当我尝试将XML文件部署到JBoss时,我收到以下错误:
DEPLOYMENTS IN ERROR:
Deployment "vfsfile:/usr/local/jboss-5.1.0.GA/server/default/deploy/customers-service.xml" is in error due to the following reason(s): org.xml.sax.SAXParseException: XML document structures must start and end within the same entity.
这可能是因为我超出了字符串值的最大允许长度,因此它只是将其读取到某一点吗?
答案 0 :(得分:1)
根据JNDI绑定管理器的文档,解组实际上是由JBossXB(JBoss XML绑定)框架实现的:
JNDI绑定管理器服务 允许您快速绑定对象 进入JNDI以供应用程序代码使用。 绑定的MBean类 服务是
org.jboss.naming.JNDIBindingServiceMgr
。 它有一个属性,BindingsConfig
,它接受XML 符合的文件jndi-binding-service_1_0.xsd
架构。BindingsConfig
的内容 属性是使用的unmarshalled JBossXB框架。
但是文档没有提到有关BindingsConfig
或JBossXB框架的任何限制。说实话,我真的不明白为什么会有这么低的限制(JDNI对象的大小相当不错,但是,我们远远不是String
的Java限制)。
因此,如果您确定您的文件格式正确且有效(并且您应该在JBoss之外以编程方式确认),也许您可以进行一些二分测试:尝试使用字符串大小的1/2,然后3/4等。但这并不能真正解决您的问题,它只会帮助社区,特别是如果您在JBoss Jira中记录某些内容。也许你会在那里获得更多有用的提示。这就是我要做的。
答案 1 :(得分:0)
org.xml.sax.SAXParseException: XML document structures must start and end within the same entity.
如果XML文档本身是有效的,则此问题看起来像缓冲区溢出或内容长度的错误解释导致缩短的行而没有返回结束标记。这可能是SAX解析器中的一个错误。你在用哪一个?我会在其最新版本中推荐Xerces。