【问题标题】:Glassfish denies access to JSF page, returning 403 HTTP response codeGlassfish 拒绝访问 JSF 页面,返回 403 HTTP 响应代码
【发布时间】:2012-08-29 09:28:28
【问题描述】:

我有一个托管 bean 绑定到我的 index.xhtml JSF 页面,它使用这样的注入 EJB:

// Code inside managed bean
@EJB
QueryEndpointLocal queryEndpoint;

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

QueryEndpoint 反过来利用另一个名为 QueryEngine 的 EJB:

// Code inside QueryEndpoint
@EJB
QueryEngine queryEngine;

目前,我有另一个与 QueryEngine 非常相似的 EJB,名为 QueryEngineLite。它们的区别在于QueryEngineLite 使用本地转储文件,该文件作为资源捆绑到企业应用程序,而QueryEngine 连接到 HBASE 数据库。它们都在启动时加载,并且有一个 @PostConstruct-annotated 方法来初始化连接。在已部署的应用程序中,QueryEndpoint 仅使用其中一个,而另一个只是在 StartupPostConstruct 注释中被注释掉。我知道有更好的方法来处理这个问题,而我目前的解决方案是一个糟糕的解决方案,但这将在项目的未来阶段发生变化。我们计划利用 AppServer 管理的连接池与 HBASE 进行通信,但目前该连接由使用 HBASE 的 java API 的库处理。

现在,我在使用 Lite 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") ")

我不知道为什么会发生这种情况以及如何解决。我应该注意,当使用第一个引擎 EJB 时,只有 JSF 页面不起作用。应用程序的其他部分(例如 Web 服务)可以与这两个引擎完美配合。提前感谢您的帮助。

【问题讨论】:

  • 我按照网络上的一些链接的建议进行了取消部署/部署。没有运气。

标签: jsf jakarta-ee glassfish http-status-code-403 permission-denied


【解决方案1】:

更新:我停止了部署应用程序的域,然后再次启动它,让预先部署的应用程序自动启动。问题消失了,我可以毫无问题地查看 index.xhtml JSF 页面。

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


在 Glassfish 问题跟踪器中提交了一个错误。 http://java.net/jira/browse/GLASSFISH-19064

【讨论】:

  • 遇到了同样的问题。投了赞成票!
  • 你有没有想出其他可能的解决方案?
  • 很遗憾,我只是提交了 glassfish 需要重新启动的文件。希望 glassfish 4 很快就会发布;)
猜你喜欢
  • 2019-07-18
  • 2013-11-14
  • 2021-12-13
  • 2022-01-16
  • 2011-10-04
  • 1970-01-01
  • 2017-07-17
  • 1970-01-01
  • 2015-12-05
相关资源
最近更新 更多