在 Restlet 2.3 中,Component main 已被弃用,我该如何使用 Spring XML 代替?

In Restlet 2.3 Component main is deprecated, how do I use Spring XML instead?

尝试从 Restlet 2.2 升级到 2.3,我收到了 Component main 的警告。在 javadocs 中它说: "Use XML support in the Spring extension instead." 但我找不到任何这样的例子。任何人都有一个让我开始的例子吗?我正在使用命令行中的 jse 版本到 运行 我的服务器。

是的,Restlet 组件的 XML 配置现已弃用,您应该使用 Spring XML 配置。为此,您需要在应用程序中添加扩展名 Spring (org.restlet.ext.spring)。如果您使用 Maven,只需添加:

<dependencies>
    (...)

    <dependency>
        <groupId>org.restlet.jse</groupId>
        <artifactId>org.restlet.ext.spring</artifactId>
        <version>${restlet-version}</version>
    </dependency>

</dependencies>

这是 Spring XML 配置中 Restlet 组件的配置示例:

<beans>
    <bean id="top" class="org.restlet.ext.spring.SpringComponent">
        <property name="server">
            <bean class="org.restlet.ext.spring.SpringServer">
                <constructor-arg value="http" />
                <constructor-arg value="3000" />
            </bean>
        </property>
        <property name="defaultTarget" ref="default" />
    </bean>

    <bean id="default" class="org.restlet.ext.spring.SpringRouter">
        <property name="attachments">
            <map>
                <entry key="/myapp" value-ref="applicationRouter" />
            </map>
        </property>
    </bean>
</beans>

您可以按如下所述为您的应用程序定义路由器:

<beans>
    <bean id="applicationRouter" 
          class="org.restlet.ext.spring.SpringRouter">
        <property name="attachments">
            <map>
                <entry key="/users/{username}">
                    <bean class="org.restlet.ext.spring.SpringFinder">
                        <lookup-method name="create"
                                  bean="userResource" />
                    </bean>
                </entry>
                (...)
            </map>
        </property>
    </bean>
</beans>

然后您可以简单地启动您的 Restlet 应用程序,如下所述,通过创建一个 Spring 容器并从中获取组件:

// Load the Spring application context within classpath
ApplicationContext context = new ClassPathXmlApplicationContext(
    new String[] { "applicationContext-router.xml", 
                   "applicationContext-server.xml" });

// Obtain the Restlet component from the context and start it
Component restletComponent = (Component) context.getBean("component");
restletComponent.start();

希望对你有帮助, 蒂埃里