кодирование сервера при использовании рестлета 2.0 - PullRequest
1 голос
/ 29 марта 2011

Я кодирую сервер для моего проекта, используя restlet 2.0.У меня есть класс Java, который запускает сервер (запуск его на порт и все такое).Я застрял в точке, где мне нужно сопоставить URI различных услуг, которые я намереваюсь предложить.Если бы я включил часть URI-отображения в сервлет, как мне это сделать.Какие изменения мне нужно сделать в web.xml.я нашел очень мало документации по этому поводу.Любая помощь приветствуется

1 Ответ

1 голос
/ 12 апреля 2011

Фактически, конфигурация маршрутизации должна быть выполнена в вашем классе приложения Restlet. Вам необходимо переопределить метод createInboundRoot, чтобы присоединить ваши ресурсы к путям, как описано ниже:

public class MyRestletApplication extends Application {
    public Restlet createInboundRoot() {
        Router router = new Router(getContext());
        router.attach("/path/{id}", MyServerResource.class);
        (...)
        return router;
    }
}

После этого к настроенным ресурсам можно обратиться через настроенный сервер Restlet. Например, с адресом http://localhost:8082/path/12, если вы внедрили сервер Restlet следующим образом:

public static void main(String[] args) {
    try {
        Server server = new Server(Protocol.HTTP, 8182);
        server.setNext(new MyRestletApplication());
        server.start();
        (...)
    } catch(Exception ex) {}
}

Restlet также предоставляет адаптер сервлета с расширением org.restlet.ext.servlet. Последний позволяет использовать сервлет ServerServlet для доступа к настроенным ресурсам. При настройке этого сервлета необходимо указать класс приложения, который будет использоваться (приложение содержит пути для ваших ресурсов) через параметр контекста org.restlet.application. Сервлет может быть настроен как каждый сервлет и отображен в шаблоне / *, как описано ниже:

<web-app>
    <context-param>
        <param-name>org.restlet.application</param-name>
        <param-value>org.restlet.example.MyApplication</param-value>
    </context-param>

    <servlet>
        <servlet-name>ServerServlet</servlet-name>
        <servlet-class>org.restlet.ext.servlet.ServerServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>ServerServlet</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
</web-app>

В этом случае ваше приложение RESTful, реализованное с помощью Restlet, будет доступно через контейнер сервлета. В этом случае ваше приложение должно быть упаковано как веб-приложение Java EE и будет доступно по адресу: http://localhost:8080/mywebapp/path/12.

Надеюсь, это поможет вам. Thierry

...