Glassfish的拒绝访问JSF页面,返回403 HTTP响应代码(Glassfish denie

2019-09-22 03:17发布

我有一个托管bean绑在我index.xhtml JSF网页,其中使用注入EJB是这样的:

// Code inside managed bean
@EJB
QueryEndpointLocal queryEndpoint;

public void search() {
    //...
    SearchResult result = queryEndpoint.search(query, resultFormat);
    //...
}

QueryEndpoint又将另需EJB命名的优势QueryEngine

// Code inside QueryEndpoint
@EJB
QueryEngine queryEngine;

目前,我还有一个EJB非常相似, QueryEngine命名QueryEngineLite 。 它们的区别在于QueryEngineLite使用其捆绑到企业应用程序作为一种资源,而本地转储文件QueryEngine连接到数据库HBASE。 他们都在启动时加载,并有@PostConstruct其初始化连接-annotated方法。 其中只有一个是使用QueryEndpoint在部署的应用程序,而另一个只是坐在周围的StartupPostConstruct注释注释掉。 我知道有很多更好的办法来处理这个和我目前的解决方案是一个坏的,但将在该项目的未来阶段改变。 我们有一个计划,以充分利用应用服务器管理连接池与HBASE沟通的,但对于现在的连接是通过它使用HBASE的Java API库处理。

现在,当我使用精简版EJB我没有任何问题。 接口工作,网络服务工作,一切都很好。 只是当我使用HBASE绑EJB( QueryEngine ),与Glassfish的HTTP 403错误的请求的index.xhtml响应和以下几行代码插入server.log中:

INFO: JACC Policy Provider:Failed Permission Check: context (" App/App-war_war ") , permission (" ("javax.security.jacc.WebUserDataPermission" "" "GET") ") 
INFO: JACC Policy Provider:Failed Permission Check: context (" App/App-war_war ") , permission (" ("javax.security.jacc.WebUserDataPermission" "" "GET:CONFIDENTIAL") ") 
INFO: JACC Policy Provider:Failed Permission Check: context (" App/App-war_war ") , permission (" ("javax.security.jacc.WebUserDataPermission" "/favicon.ico" "GET") ") 
INFO: JACC Policy Provider:Failed Permission Check: context (" App/App-war_war ") , permission (" ("javax.security.jacc.WebUserDataPermission" "/favicon.ico" "GET:CONFIDENTIAL") ")

我不知道为什么会这样,以及它如何被固定。 我要指出,这仅仅是JSF页面中使用的第一引擎EJB时不起作用。 如Web服务应用程序的其他部分与两台发动机正常工作。 在此先感谢您的帮助。

Answer 1:

更新:我停止了与部署的应用领域,并再次启动它,让预部署的应用程序自动启动。 问题是过去了,我可以毫无问题查看的index.xhtml JSF页面。

我通过创建另一个域并再现问题验证了这一点。 第一次的index.xhtml部署后返回HTTP 403。 重新启动域解决了这个问题。 为什么?


一个错误是在Glassfish的问题跟踪备案。 http://java.net/jira/browse/GLASSFISH-19064



文章来源: Glassfish denies access to JSF page, returning 403 HTTP response code