Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Eclipse Virgo中使用restlet_Java_Spring_Jakarta Ee_Restlet_Eclipse Virgo - Fatal编程技术网

Java 在Eclipse Virgo中使用restlet

Java 在Eclipse Virgo中使用restlet,java,spring,jakarta-ee,restlet,eclipse-virgo,Java,Spring,Jakarta Ee,Restlet,Eclipse Virgo,我正在尝试将restlet集成到一个使用EclipseVirgo作为应用服务器的应用程序中。由于Virgo基于OSGi,我不得不使用org.restlet.OSGi库和不依赖Java1.7的最新版本(Restlet2.2.3),因为最新的Virgo版本抱怨捆绑包依赖Java1.7 我试图让restlet使用EclipseVirgoWeb服务器来交付RESTAPI,但我所尝试的似乎都不起作用。当然,我可以在与EclipseVirgo不同的端口上启动restlet自己的web服务器,但是我没有成功地

我正在尝试将restlet集成到一个使用EclipseVirgo作为应用服务器的应用程序中。由于Virgo基于OSGi,我不得不使用
org.restlet.OSGi
库和不依赖Java1.7的最新版本(Restlet2.2.3),因为最新的Virgo版本抱怨捆绑包依赖Java1.7

我试图让restlet使用EclipseVirgoWeb服务器来交付RESTAPI,但我所尝试的似乎都不起作用。当然,我可以在与EclipseVirgo不同的端口上启动restlet自己的web服务器,但是我没有成功地使用它的web服务器。有可能吗

更新

故事中还涉及到春天,所以我认为这会使事情变得更加有趣。与Spring相关的配置如下所示:

<context-param>
    <param-name>contextClass</param-name>
    <param-value>org.eclipse.virgo.web.dm.ServerOsgiBundleXmlWebApplicationContext</param-value>
</context-param>
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring/*.xml</param-value>
</context-param>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<servlet>
    <servlet-name>springdispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextClass</param-name>
        <param-value>org.eclipse.virgo.web.dm.ServerOsgiBundleXmlWebApplicationContext</param-value>
    </init-param>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring/*.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>springdispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

实际上,在osgi容器中创建work restlet不需要扩展名
org.restlet.ext.osgi
。事实上,在OSGi版本中,所有Restlet JAR都包含有效的清单文件(甚至在版本2.2之前)

Virgo支持Web捆绑包,因此您可以利用扩展
org.Restlet.ext.servlet
将Restlet应用程序嵌入其中。有关详细信息,请查看以下链接:

否则,我想了解更多关于在这种环境下尝试使用Restlet时出现的错误的详细信息

编辑(在问题中添加的新元素之后)

您应该为Spring配置restletservlet。这个servlet将替换Spring本身的servlet(
DispatcherServlet
)。侦听器
ContextLoaderListener
必须保留,因为它用于管理Web捆绑包中的Spring应用程序上下文

以下是此servlet的配置示例:

<servlet>
    <servlet-name>SpringRestletServlet</servlet-name>
    <servlet-class>org.restlet.ext.spring.SpringServerServlet</servlet-class>
    <init-param>
        <param-name>org.restlet.component</param-name>
        <param-value>myComponent</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>tracker</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

谢谢你的解释。我遵循了教程,但没有多大成功。这可能是因为我必须让Spring也能正常工作。我更新了这个问题,你能看一下吗?我更新了我的答案来描述如何在你的上下文中配置Restlet。希望它能解决你的问题!我得到了这样一个结果:由java.lang.ClassNotFoundException引起:net.sf.cglib.proxy.Factory,不管我怎么做。我知道这是一个OSGi的东西,但无论我做了什么使它看到cglib依赖项,我都失败了。你能提供完整的异常堆栈来查看它从何处抛出吗?谢谢我更新了问题,因为我无法将整个stacktrace放在评论中。
<servlet>
    <servlet-name>SpringRestletServlet</servlet-name>
    <servlet-class>org.restlet.ext.spring.SpringServerServlet</servlet-class>
    <init-param>
        <param-name>org.restlet.component</param-name>
        <param-value>myComponent</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>tracker</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>
<bean id="myComponent" class="org.restlet.ext.spring.SpringComponent">
    <property name="defaultTarget" ref="router" />
</bean>

<bean name="router" class="org.restlet.ext.spring.SpringRouter">
    <property name="attachments">
        <map>
            <entry key="/ping">
                <bean class="org.restlet.ext.spring.SpringFinder">
                    <lookup-method name="create" bean="pingServerResource" />
                </bean>
            </entry>
            <entry key="/dir" value-ref="staticsDirectory" />
        </map>
    </property>
</bean>

<bean id="pingServerResource" class="test.TestServerResource"></bean>