JBoss JNDI Binding Manager - максимальная длина значения?

Я использую метод, описанный здесь, чтобы зарегистрировать строковые значения в дереве JNDI с помощью XML-файла, развернутого в JBoss.

Это отлично работает для моих системных констант (URL и т.п.). Однако я также пытаюсь зарегистрировать содержимое файла, который был закодирован в строку Base64. Файл довольно большой (около 400 КБ), поэтому результирующая строка очень длинная.

Когда я пытаюсь развернуть файл 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.

Вероятно, это связано с тем, что я превышаю максимально допустимую длину строкового значения и, следовательно, оно читает его только до определенного момента?


person William    schedule 04.12.2009    source источник
comment
Вы пытались передать type=java.io.File и путь к файлу в качестве значения?   -  person cetnar    schedule 07.12.2009
comment
Я пробовал это (после прочтения вашего комментария), но я не думаю, что он на самом деле помещает файл в дерево JNDI, поскольку ошибки нет, даже если имя файла указано неправильно.   -  person William    schedule 09.12.2009


Ответы (2)


Согласно документации JNDI Binding Manager, десортировка фактически выполняется инфраструктурой JBossXB (JBoss XML Binding):

Служба диспетчера привязки JNDI позволяет быстро привязывать объекты к JNDI для использования в коде приложения. Класс MBean для службы привязки — org.jboss.naming.JNDIBindingServiceMgr. Он имеет единственный атрибут BindingsConfig, который принимает документ XML, соответствующий схеме jndi-binding-service_1_0.xsd. Содержимое атрибута BindingsConfig не сортируется с использованием платформы JBossXB.

Но в документации не упоминаются какие-либо ограничения, касающиеся BindingsConfig или фреймворка JBossXB. И, честно говоря, я действительно не понимаю, почему может быть такой низкий предел (размер довольно приличный для объекта JDNI, но мы далеки от ограничений Java для String).

Итак, если вы уверены, что ваш файл правильно сформирован и действителен (и вы должны подтвердить это программно вне JBoss), возможно, вы могли бы приступить к некоторому дихотомическому тестированию: попробуйте с 1/2 размера строки, затем 3/4 и т. д. Но на самом деле это не решит вашу проблему, а просто поможет сообществу, особенно если вы что-то зарегистрируете в JBoss Jira. И, возможно, вы получите больше полезных советов там. Это то, что я бы сделал.

person Pascal Thivent    schedule 10.12.2009

org.xml.sax.SAXParseException: XML document structures must start and end within the same entity.

Если сам XML-документ наверняка действителен, то эта проблема выглядит как переполнение буфера или неверная интерпретация длины содержимого, что привело к укороченной строке без возврата конечного тега. Вероятно, это ошибка в анализаторе SAX. Какой из них вы используете? Я бы порекомендовал последнюю версию Xerces.

person BalusC    schedule 09.12.2009