Веб-сервис SOAP, использующий JNA для отправки данных текстового файла в DLL - PullRequest
0 голосов
/ 30 марта 2012

Следующий технический стек (SOAP / JNA / Win DLL) для меня трижды, поэтому говорите тихо и используйте маленькие слова, пожалуйста; -)

EDITED Основная цель состоит в том, чтобы каким-то образом получить данные локального файла клиента через удаленный веб-сервис, который обеспечивает доступ JNA к DLL, написанной на C, для которой нужны данные файла. При необходимости я могу поиграться с кодом DLL, но я не столько программист на Си за последние несколько десятилетий.

Более длинная версия: У нас есть C-код, который был преобразован из автономного приложения в набор DLL в надежде преобразовать функциональность в набор сервисов. У нас есть доступ к коду C и возможность дальнейших изменений по мере необходимости. Но мы являемся магазином Java, и поэтому здесь нет большого опыта работы с Си (особенно я), поэтому я надеюсь провести наименьшее количество операций над кодом Си. Я бы также предпочел не пытаться преобразовать ядро ​​работающего критически важного кода C в Java, опасаясь сломать его в процессе. Но я пытаюсь написать SOAP-веб-сервисы для удаленного доступа к функциям DLL через несколько клиентов. Кто-то изначально написал слой JNA для доступа к одному из более простых статических интерфейсов. Но некоторые из режимов старого приложения C читают произвольное количество файлов (в настоящее время локальных для клиента) из предоставленного клиентом списка файлов.

Я пытаюсь выяснить, какие есть варианты отправки данных текстового файла через мой интерфейс JNA, и что требуется от клиента для отправки файлов. Я видел другой вопрос SO , указывающий, что отправка Java InputStream s как указателей C FILE - маловероятный или невозможный путь. Примеры интерфейсов JNA, которые я видел до сих пор для задач, отличных от передачи файлов, определяют классы Java, расширяющие Structure полями массива byte [] предварительного размера для отправки строковых данных - мои файлы являются текстовыми файлами. Но я не знаю, сколько файлов будет найдено в списке файлов, и каков будет размер каждого файла.

Придет ли мне на помощь JNA * 1015? Как JNA Pointer будет работать через удаленные вызовы и будет ли он работать с файлами напрямую или я буду считывать содержимое файла в StringBuffer, преобразовывать в байтовый массив динамического размера и передавать Pointer? SAAJ входит в игру вообще?

...