如何获取Component实例

时间:2015-08-20 03:38:56

标签: restlet

我正在运行一个tomcat服务器,我的web.xml如下所示。我需要从Component类中获取TaskService的实例。我没有明确地创建一个Component。我相信ServerServlet类在内部创建了一个隐式Component。 我的问题是如何访问隐式的Component实例?

<servlet>
    <servlet-name>ServiceGateway</servlet-name>
    <servlet-class>org.restlet.ext.servlet.ServerServlet</servlet-class>
    <init-param>
        <param-name>org.restlet.application</param-name>
        <param-value>com.test.ServiceApplication</param-value>
    </init-param>
</servlet>

1 个答案:

答案 0 :(得分:2)

是的,你是对的! Restlet的servlet扩展为您创建了一个组件。

没有真正直接的方式来获得它。也就是说,您可以浏览上下文以访问其实例。

public class TestApplication extends Application {
    @Override
    public Restlet createInboundRoot() {
        // Get restlet context
        Context context = getContext();

        // Get servlet context
        ServletContext servletContext = (ServletContext) attrs.get(
                  "org.restlet.ext.servlet.ServletContext");

        // Get restlet component
        Component component = (Component) servletContext.getAttribute(
         "org.restlet.ext.servlet.ServerServlet.component.ServerServlet");

        (...)
    }
}

以下是我在文件web.xml中使用的配置:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns="http://java.sun.com/xml/ns/javaee"   
     xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
           http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    id="myApplication" version="2.5">
    <display-name>My Application</display-name>

    <servlet>
        <servlet-name>ServerServlet</servlet-name>
        <servlet-class>org.restlet.ext.servlet.ServerServlet</servlet-class>
        <init-param>
            <param-name>org.restlet.application</param-name>
            <param-value>test.RestletApplication</param-value>
        </init-param>
    </servlet>

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

希望它可以帮到你, 亨利