Я увлеченный пользователь фреймворка Restlet (версия 2.08).Вот почему я сейчас пытаюсь использовать Restlet в среде OSGi для практической части моей диссертации.Наконец, я пришел, чтобы создать серверный комплект (который запускается Активатором в моей среде Felix OSGi) и показать сообщение в ответ на простой вызов, такой как http://localhost:8888/
.
Но я неудалось получить другой ресурс из моего рестлета.Представьте себе случай, когда мне нужны данные от http://localhost:8080/tripleStore/triples/5
, чтобы вычислить результат http://localhost:8888/test
.(фрагмент кода следует ...)
public void startServer() throws Exception {
component = new Component();
Server server = new Server ( Protocol.HTTP, 8888);
component.getServers().add(server);
Client client = new Client (Protocol.HTTP);
component.getClients().add(client);
Restlet restlet = new Restlet() {
@Override
public void handle(Request request, Response response) {
response.setEntity("Container Resource is active!", MediaType.TEXT_PLAIN);
}
};
Restlet restletTest = new Restlet() {
@Override
public void handle(Request request, Response response) {
RdfClientResource cli = new RdfClientResource("http://localhost:8080/tripleStore/triples/5");
cli.setFollowingRedirects(false);
Representation repri = cli.get();
response.setEntity(repri);
}
};
component.getDefaultHost().attach("/container",new Sink());
component.getDefaultHost().attach("/test",restletTest);
component.getDefaultHost().attach(restlet);
component.getClients().add(Protocol.HTTP);
component.start();
}
В настоящее время я получаю ошибку "неверный запрос", когда я вызываю http://localhost:8080/tripleStore/triples/5
в моем рестлете, и ошибку "запрещенный", когда я звоню http://127.0.0.1:8080/tripleStore/triples/5
из моего рестлета.
Дальнейшие исследования показали, что причина этих ошибок довольно проста.Рестлет пытается получить результаты напрямую от сетевого прокси, который не знает localhost
и запрещает вызов 127.0.0.1
.
Еще один критический момент заключается в том, что ошибка всегда была реплицируемой, за исключениемво время одной попыткиВ этом случае все работало нормально.Вот почему я предполагаю отношение к порядку запуска OSGi.(Что не является исправлением и зависит от структуры эфира Sonatype.)
Вам уже известна ошибка, подобная этой?И можете ли вы предложить мне какое-либо исправление, позволяющее избежать попытки запуска всех заказов OSGi вручную?Когда я пытаюсь сделать это за пределами OSGi, все работает вполне нормально.
Заранее спасибо!Marcus