gpt4 book ai didi

jsf - 如何在JSF框架中实现JAX-RS RESTful服务

转载 作者:行者123 更新时间:2023-12-03 20:25:02 25 4
gpt4 key购买 nike

在我的实验室中,我被要求使用JSF框架创建一个简单的网站,并同时使用REST。我对这两个做了一些研究。事实证明,对于REST,我必须使用带有Jersey的JAX-RS框架。我想知道如何集成这两个框架,即JAX-RS和JSF?

我已经在web.xml中的以下servlet用于JSF:

<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/test/*</url-pattern>
</servlet-mapping>


对于Jersey,我认为必须在 web.xml中使用以下servlet:

<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.jbm.rest</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>


现在,我担心的是,这个Jersey servlet将取代 web.xml中的Faces servlet。这会将我的应用程序从JSF更改为JAX-RS。但是我想保留JSF并同时使用JAX-RS。我怎样才能做到这一点?

最佳答案

不必担心。您可以在单个Web应用程序中安全地拥有多个servlet,只要它们的URL模式不会相互冲突即可。通常,如果是这种情况,那么在webapp启动过程中,一个比较不错的servlet容器将已经引发异常。在您的情况下,您已经在/test/*上注册了JSF servlet(顺便说一句,您usually使用*.xhtml对此很奇怪),并且您已经在/api/*上注册了JAX-RS servlet。 >。因此,您只需要使用与这些URL模式匹配的URL来调用它们。

而且,为了消除概念上的误解,您完全不能也不能“在JSF中实现REST”。它们彼此完全独立。他们可以轻松地在同一个Web应用程序中彼此轻松地彼此相邻运行,而无需彼此了解。他们唯一可以共享的是service layer或“共享”(CDI)受管bean。但是通常就是这样。服务层的设计又独立于谁使用它。

此特定问题与JSF或JAX-RS无关。只是basic servlets。退一步,花点时间来learn more基本上每个Java EE Web应用程序的构建基石,也是值得的。

关于jsf - 如何在JSF框架中实现JAX-RS RESTful服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29982657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com