Glassfish 中批处理 OSGi 应用程序的授权问题 - “当前用户无权执行此操作”

秋草

我已经在 Glassfish 4.1.2 下部署了一个带有许多 OSGi 包的 OSGi maven 应用程序。这个包是用一个 web 应用程序激活的,该应用程序使用定义在其上的作业进行一些调用。所有这些实际上都在按预期的方式工作。

Web 应用程序执行作业,作业调用 OSGi 包。当我尝试从外部获取批次状态时,问题就出现了。

目的是使用 REST webservices 部署其他 web 应用程序,以便我可以按需查询批处理状态。当我运行时:

private JobExecution getJob(int id) {

   JobOperator jobOperator = BatchRuntime.getJobOperator();
   JobExecution job = null;

   try {

           job = jobOperator.getJobExecution(id);

           System.out.println("job: " + job);
           System.out.println("name: " + job.getJobName());
           System.out.println("batchStatus: " + job.getBatchStatus());

   } catch (Exception e) {

           e.printStackTrace();

   }

   return job;

}

我得到这个例外:

javax.batch.operations.JobSecurityException:当前用户无权执行此操作

我已经尝试在运行批次的同一 Web 应用程序中部署 Web 服务,只是为了测试行为,并且在发送批次后,我不断收到相同的异常。

奇怪的是,当我从 webapp 控制器运行批处理时,它会运行,并且我可以像魅力一样获得批处理状态:

@ViewScoped
@ManagedBean(name = "controller")
public class Controller implements Serializable {


   public void executeJobController() {

       JobOperator jobOperator = BatchRuntime.getJobOperator();
       Long executionIdDummy = jobOperator.start("DummyJob", new Properties());
       JobExecution jobExecutionDummy = jobOperator.getJobExecution(executionIdDummy);
       System.out.println("BatchDummyStatus : " + jobExecutionDummy.getBatchStatus());

   }
}

我在 JSR352 规范、Javadoc 或 Java EE 教程中找不到关于批处理安全性的任何内容。

有可能做到这一点吗?是关于 Glassfish JSR352 的吗?我怎样才能做到这一点?

感谢您的时间。

编辑

按照@Scott Kurz 的建议将大部分日志设置为 FINE 后,我可以看到这些新行:

[2017-12-05T13:10:45.100-0500] [glassfish 4.1] [FINE] [] [javax.enterprise.web.core] [tid: _ThreadID=64 _ThreadName=http-listener-1(4)] [timeMillis : 1512497445100] [levelValue: 500] [CLASSNAME: org.apache.catalina.authenticator.AuthenticatorBase] [METHODNAME: invoke] [[安全检查请求 GET /ws/webresources/facturacion/getJobs ]] [ 2017-131000 ] :45.101-0500] [glassfish 4.1] [FINE] [] [javax.enterprise.web.core] [tid: _ThreadID=64 _ThreadName=http-listener-1(4)] [timeMillis: 1512497445101] [levelValue: 500] [CLASSNAME: org.apache.catalina.authenticator.AuthenticatorBase] [METHODNAME: invoke] [[不受任何约束]]

这意味着一些奇怪的事情:

[2017-12-05T13:10:45.104-0500] [glassfish 4.1] [FINE] [AS-WEB-NAMING-00005] [javax.enterprise.web.naming] [tid: _ThreadID=64 _ThreadName=http-listener- 1(4)] [timeMillis: 1512497445104] [levelValue: 500] [CLASSNAME: org.apache.naming.resources.FileDirContext] [METHODNAME: file] [[文件无法读取/home/felipe/Documents/Programas/glassfish4/ glassfish/domains/domain1/applications/ws/WEB-INF/classes/META-INF/services/javax.batch.operations.JobOperator]]

我已经尝试在本地主机中以 sudo 的身份运行 glassfish,但我得到了相同的行为,并且得到了完全相同的错误。

秋草

当我在 OSGi 环境中工作时,首先重新部署(手动取消部署并一个一个部署)所有 OSGi 包,最后,重新部署(取消部署和部署)Web 服务所在的 Web 应用程序,然后,它开始工作。

在进行一些重新部署后,似乎无法以某种方式识别 OSGi 依赖项,从而导致安全问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在墙上张贴文字:用户未授权应用程序在android中执行此操作

来自分类Dev

在墙上张贴文字:用户未授权应用程序在android中执行此操作

来自分类Dev

在gwt / osgi Web应用程序中实现授权和认证的首选方法是哪种?

来自分类Dev

#200用户未授权应用程序执行此操作

来自分类Dev

Glassfish,OSGi Web应用程序捆绑包(WAB)和虚拟服务器

来自分类Dev

在批处理程序中添加用户界面

来自分类Dev

在Glassfish中为应用程序设置默认资源

来自分类Dev

Java:在OSGi应用程序中设置时区

来自分类Dev

Facebook错误(#200)用户未授权应用程序执行此操作

来自分类Dev

错误(#200)用户未授权应用程序执行此操作facebook graph api php codeigniter

来自分类Dev

Facebook共享错误:(#200)用户未授权应用程序执行此操作

来自分类Dev

错误(#200)用户未授权应用程序执行此操作

来自分类Dev

(#200)用户未授权应用程序执行此操作facebook php api错误?

来自分类Dev

(OAuthException-#200)(#200)用户未授权应用程序执行此操作

来自分类Dev

Facebook错误(#200)用户未授权应用程序执行此操作

来自分类Dev

Php Post Facebook Graph返回错误:(#200)用户未授权应用程序执行此操作

来自分类Dev

是否可以覆盖glassfish \ modules \ webservices-osgi.jar中的类?

来自分类Dev

Spring批处理应用程序中的Spring JdbcCursorItemReader

来自分类Dev

在BlueMix上的移动应用程序中,如何轻松地对用户进行分组(授权)

来自分类Dev

Azure AD中的OAuth 2.0是授权应用程序用户的良好解决方案吗?

来自分类Dev

向Facebook发布错误:“(#200)用户未授权应用程序执行此操作”,键入:“ OAuthException”,代码:200

来自分类Dev

“无法安装应用程序。测试人员无权访问此应用程序。” TestFlight iOS应用程序中的错误

来自分类Dev

在高级应用程序中同时授权

来自分类Dev

如何在WAS 8.0中部署的自己的OSGi应用程序中启动特定的捆绑软件?

来自分类Dev

如果用户在测验应用程序中回答 10 个问题,如何完成操作

来自分类Dev

glassfish应用程序服务器中的Web服务器是什么?

来自分类Dev

在哪里为在 glassfish 4 中运行的应用程序设置系统变量

来自分类Dev

基于Windows当前用户的C#应用程序授权

来自分类Dev

如何在WebSphere的OSGi企业应用程序中设置记录器?

Related 相关文章

  1. 1

    在墙上张贴文字:用户未授权应用程序在android中执行此操作

  2. 2

    在墙上张贴文字:用户未授权应用程序在android中执行此操作

  3. 3

    在gwt / osgi Web应用程序中实现授权和认证的首选方法是哪种?

  4. 4

    #200用户未授权应用程序执行此操作

  5. 5

    Glassfish,OSGi Web应用程序捆绑包(WAB)和虚拟服务器

  6. 6

    在批处理程序中添加用户界面

  7. 7

    在Glassfish中为应用程序设置默认资源

  8. 8

    Java:在OSGi应用程序中设置时区

  9. 9

    Facebook错误(#200)用户未授权应用程序执行此操作

  10. 10

    错误(#200)用户未授权应用程序执行此操作facebook graph api php codeigniter

  11. 11

    Facebook共享错误:(#200)用户未授权应用程序执行此操作

  12. 12

    错误(#200)用户未授权应用程序执行此操作

  13. 13

    (#200)用户未授权应用程序执行此操作facebook php api错误?

  14. 14

    (OAuthException-#200)(#200)用户未授权应用程序执行此操作

  15. 15

    Facebook错误(#200)用户未授权应用程序执行此操作

  16. 16

    Php Post Facebook Graph返回错误:(#200)用户未授权应用程序执行此操作

  17. 17

    是否可以覆盖glassfish \ modules \ webservices-osgi.jar中的类?

  18. 18

    Spring批处理应用程序中的Spring JdbcCursorItemReader

  19. 19

    在BlueMix上的移动应用程序中,如何轻松地对用户进行分组(授权)

  20. 20

    Azure AD中的OAuth 2.0是授权应用程序用户的良好解决方案吗?

  21. 21

    向Facebook发布错误:“(#200)用户未授权应用程序执行此操作”,键入:“ OAuthException”,代码:200

  22. 22

    “无法安装应用程序。测试人员无权访问此应用程序。” TestFlight iOS应用程序中的错误

  23. 23

    在高级应用程序中同时授权

  24. 24

    如何在WAS 8.0中部署的自己的OSGi应用程序中启动特定的捆绑软件?

  25. 25

    如果用户在测验应用程序中回答 10 个问题,如何完成操作

  26. 26

    glassfish应用程序服务器中的Web服务器是什么?

  27. 27

    在哪里为在 glassfish 4 中运行的应用程序设置系统变量

  28. 28

    基于Windows当前用户的C#应用程序授权

  29. 29

    如何在WebSphere的OSGi企业应用程序中设置记录器?

热门标签

归档