En mi laboratorio me pidieron crear una simple página web usando JSF marco y el uso de DESCANSO también. Hice algunas investigaciones en los dos. Resulta que para el RESTO tengo uso de JAX-RS marco de Jersey. Me preguntaba ¿cómo puedo integrar estos dos marcos, JAX-RS y JSF?

Ya he hecho el siguiente servlet en web.xml para 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>

Para Jersey me di cuenta que tengo que usar el siguiente servlet en web.xml:

<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>

Ahora mi preocupación es, me parece que este Jersey servlet reemplazará las Caras servlet en web.xml. Esto va a cambiar mi aplicación de JSF a JAX-RS. Pero quiero seguir JSF y el uso de JAX-RS así. ¿Cómo puedo hacer eso?

Creo que tanto en el marco del co-existir y puede invocar a cualquiera de ellos de acuerdo a la URL de llamada.
¿Me puede mostrar cómo hacer la url de llamada en consecuencia?
como http://host:port/yourapp/test/* para JSF y http://host:port/yourapp/api/* para el DESCANSO

OriginalEl autor asdfkjasdfjk | 2015-05-01

3 Comentarios

  1. 15

    Esta preocupación es innecesaria. De forma segura puede tener varios servlets en una sola aplicación web, así como sus patrones de URL no choquen unos con otros. Por lo general, si ese fuera el caso, un poco cuerdo contenedor de servlets ya lanzar una excepción durante la webapp de inicio. En su caso, que se haya registrado el JSF servlet en /test/* (que es un extraño, por cierto, generalmente uso *.xhtml para eso), y que se haya registrado el JAX-RS servlet en /api/*. Así que sólo tenemos que llamar usando URLs que coincidan con los patrones de URL.

    Y, para aclarar un malentendido conceptual, no es y no puede «aplicar RESTO en JSF». Ellos son completamente independientes el uno del otro. Que sólo puede ejecutar fácilmente próximos unos a otros en la misma aplicación web en paz sin saber el uno del otro. La única cosa que se puede compartir es la capa de servicio o «compartidos» (CDI) managed beans. Pero eso en general. El diseño de la capa de servicio es a su vez independiente de quién lo usa.

    Este problema no está relacionado con JSF ni JAX-RS. Es sólo básicos de los servlets.. Podría ser así vale la pena el esfuerzo para dar un paso atrás para los fundamentos y gastar un poco de tiempo para aprender más sobre el edificio de piedra de, básicamente, cada Java EE web de la aplicación.

    de acuerdo con el comentario anterior, es posible conseguir el JSF funcionalidad si me llaman host:puerto/yourapp/api* para el resto. Lo siento por mi estúpida pregunta, soy totalmente novato.
    Sí, esa es la forma básica de los servlets de trabajo, como respondió.

    OriginalEl autor BalusC

  2. 0

    Directamente no se puede tener los dos en la misma clase de java o de capa.
    He implementado es como el de abajo,

                                  |---> JSF Managed Beans(Inject logic here)
    Database --> Daos --> Logic --|
                                  |---> JAX-RS  (Inject logic here)
    Que es exactamente lo que se indica en la otra respuesta: «La única cosa que se puede compartir es la capa de servicio. Pero eso en general. El diseño de la capa de servicio es a su vez independiente de quién lo usa. y que tiene una buena explicación en stackoverflow.com/questions/30639785/…

    OriginalEl autor electricalbah

Dejar respuesta

Please enter your comment!
Please enter your name here