Получение отдельного контента в Java - PullRequest
0 голосов
/ 09 февраля 2009

Проблема:

Мне нужно получить разные типы контента из разных источников, нормализовать их, а затем сделать их постоянными с помощью JDO.

Наивное решение?:

Создание и прослушивание определенного порта для каждого типа данных.

OR

сделать кучу сложного разбора

На первый взгляд идеальное решение:

Имеют настраиваемые типы URL, т.е. FOO: //myhost.tld, BAR: //myhost.tld. любое приложение может затем отправить URL-адрес, специфичный для пользовательского типа, и хост в идеале будет использовать абстрактные классы Java URLConnection и URLStreamHandler для создания фабрики, которая создаст соответствующий поток нормализации. Или, если есть какой-то другой способ получить URL-адрес соединения, я думаю, что этого будет достаточно

Возможно ли это? Я просмотрел API, и другие документы не могут понять, возможно ли использовать их с сокетом Java-сервера.

Я должен упомянуть, что в некоторых (многих? Большинстве?) Случаях я не несу ответственности за код клиента.

Ответы [ 3 ]

1 голос
/ 10 февраля 2009

MIME - довольно стандартный способ передачи информации о типе и расположении контента.

0 голосов
/ 07 марта 2009

Решение, которое я в итоге выбрал, заключается в использовании java nio lib и пула потоков с коллекцией ServerSocketChannels с подключенными обработчиками содержимого

0 голосов
/ 09 февраля 2009

То, что вы называете «тип URL», является частью протокола URL, и все, что он делает, это сообщает клиенту, по какому протоколу сервер с этим URL будет ожидать его передачи.

Это НЕ часть «мета-протокола», который позволил бы серверу выяснить URL-адрес, по которому он вызывается, если только вы не используете протокол, который содержит эту информацию в качестве заголовка - что обычно не имеет место. Также обратите внимание, что протоколы обычно подразумевают порт по умолчанию, если в URL-адресе также не указан порт.

Весь API Java URLConnection / URLStreamHandler ориентирован на использование на клиенте, а не на сервере, поэтому я не верю, что его можно использовать так, как вы хотите.

Первые две альтернативы, которые вы придумали, в значительной степени являются вашими вариантами: либо использовать разные порты для разных типов ввода, либо попросите клиентов отправить заголовок, который задает тип ввода, который следует.

...