我想使用JAVA Entreprise Java Bean和RESTful Web服务(JAX-RS)创建一个员工管理工具。
目的是您有一个端点,例如Administration / v1 / emp,您可以在其中POST一个名字等的新员工。
到目前为止,这可行,我可以使用SOAPUI发送POST请求。
现在我想创建一个包含Java服务器面和/或PrimeFaces的UI。我已经看到我可以为此创建托管bean并使用此托管bean来调用我的entreprise java bean上的方法(业务逻辑) 到现在为止还挺好。 但是在我的应用程序中,我现在在web.xml中有两个servlet:
<?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"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<servlet>
<servlet-name>Resteasy</servlet-name>
<servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Resteasy</servlet-name>
<url-pattern>/v1/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.xhtml</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<context-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>org.se.bac.service.RESTApplication</param-value>
</context-param>
<listener>
<listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
</listener>
</web-app>
这样,如果我调用像/ v1 / emp这样的资源,resteasy servlet将处理请求,如果我调用index.xhtml文件,则jsf servlet可以工作。
但我想要做的是我想在资源之上构建一个图形用户界面 - 所以我想在浏览器中调用/ v1 / emp然后用户应该看到例如列表或表单(如定义的那样)在xhtml文件中)
但是现在我得到一个json或xml表示(当然)如果我调用资源/ v1 / emp并在list.xhtml文件中定义我的列表我需要在浏览器中调用list.xhtml
如何调用资源/ v1 / emp并获取UI xhtml页面?
感谢。
答案 0 :(得分:0)
这是servlet容器用于将请求路由到特定servlet(source)的规则:
因此,您可以为API和您的网页使用不同的URI。例如,像这样定义你的servlet:
...
<servlet-mapping>
<servlet-name>Resteasy</servlet-name>
<url-pattern>/api/v1/*</url-pattern>
</servlet-mapping>
...
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/</url-pattern>
<url-pattern>/v1/*</url-pattern>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
所以想法是你需要划分请求。而且你需要更加具体,因为容器只使用请求的URL来定义谁将处理它。您还可以将Faces Servlet定义为默认servlet,然后从index.xhtml
始终特定使用扩展名到其他页面的路径。