JEE7 - JSF和resteasy共享context-root

时间:2017-01-18 21:39:52

标签: java jsf jboss jax-rs servlet-3.0

我有一个带有ejb模块的耳包和一个war模块。 ejb模块有一个休息服务(resteasy,因为我部署在jboss eap 7上)。

问题是休息服务和war应用程序共享相同的context-root

示例:

http://localhost/context-root/index.html

http://localhost/context-root/rest-api/config/1

问题是我的战争应用程序需要登录才能工作,但除非我以用户身份登录网络,否则我不能调用其余的API。

我认为解决方案是关于servlet的,但我无法弄清楚如何。

这是我的web.xml摘录

<servlet>
    <servlet-name>future-web</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet>
    <servlet-name>Push Servlet</servlet-name>
    <servlet-class>org.primefaces.push.PushServlet</servlet-class>
    <init-param>
        <param-name>org.atmosphere.cpr.broadcasterCacheClass</param-name>
        <param-value>org.atmosphere.cache.UUIDBroadcasterCache</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    <async-supported>true</async-supported>
</servlet>
<servlet-mapping>
    <servlet-name>Push Servlet</servlet-name>
    <url-pattern>/primepush/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>future-web</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>

任何帮助都会受到赞赏。

感谢

更新:

这就是我所拥有的:

本地主机/上下文根/ index.html中

本地主机/上下文根/ REST的API /配置/ 1

这就是我要找的东西:

本地主机/上下文根/ index.html中

本地主机/ REST的API /配置/ 1

1 个答案:

答案 0 :(得分:0)

您想要实施哪种登录?基于表单或http身份验证?

您需要为web.xml添加安全性约束。以下代码段添加了两个角色apiapplication。这些角色将添加到约束中的两个资源集合中。然后选择登录方法BASIC。

您可以在此处找到有关此主题的更多信息:https://docs.oracle.com/cd/E11035_01/wls100/security/thin_client.html#wp1045995

<security-role>
    <role-name>api</role-name>
</security-role>
<security-role>
    <role-name>application</role-name>
</security-role>

<security-constraint>
    <web-resource-collection>
        <web-resource-name>
            API Servlet
        </web-resource-name>
        <url-pattern>/primepush/*</url-pattern>
    </web-resource-collection>
    <!-- uncomment constraint to enable authentication for webservice path
    <auth-constraint>
        <role-name>api</role-name>
    </auth-constraint> -->
</security-constraint>

<security-constraint>
    <web-resource-collection>
        <web-resource-name>
            Application
        </web-resource-name>
        <url-pattern>/*.xhtml</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>application</role-name>
    </auth-constraint>
</security-constraint>

<login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>Application Login</realm-name>
</login-config>