问题标签 [payara-micro]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
maven - 根据 PROD 或 TEST 在 NetBeans 中使用不同的 persistence.xml
我有一个带有许多实体类和会话 bean 的 JEE / Maven 项目。
它可以构建,我可以使用 JSF 等几个 Web 模块中的 EJB 模块。该模块使用 Payara 服务器中定义的数据连接。
现在我想构建一些 Junit 测试脚本来使用 Maven 和 Payara 嵌入式自动测试我的会话 bean。
从其他文章中我得出结论,我可以有这样的结构:
这将使我可以使用两个不同的 persistence.xml 文件。
我现在遇到的一个问题是 payara 服务器需要数据源的 JNDI 名称,如下所示:
而payara嵌入式需要格式:
因此,当我运行测试和想要部署时,它给我带来了问题。
但我无法嵌入 netBeans / Maven / Payara 以使用位于测试中的 persistence.xml 文件。它始终使用位于 main 中的那个。这意味着我的 JUint 测试将无法运行,因为他们找不到正确的数据源。
我主要的persistence.xml:
我在测试中的 persistence.xml
如何强制 netBeans / maven 使用正确的 persistence.xml?
这个问题还有其他解决方案吗?我拒绝相信我是唯一有这个问题的人。但我还没有看到这个案子的任何解决方案。
编辑:
如果我在 main 下删除我的 persistence.xml,我的测试将按预期运行。
当我将 persistence.xml 复制回 main 时,出现以下错误:
如果我在 main 中没有 persistence.xml,我将无法部署我的应用程序,因为我没有 persistenceContext 和 jdbc 连接之间的映射。
提前致谢
jakarta-ee - 将 JWT 承载传递给受保护的 JAX-RS 资源时,Payara Micro 返回 AuthenticationStatus.SEND_FAILURE
我对 Java 编程比较陌生,所以请多多包涵。我正在开发一个部署在 Payara Micro 上的微服务。为了安全起见,我使用的是 JWT。因为 Payara Micro 是 MicroProfile 的实现,所以我试图利用 MicroProfile JWT auth 规范(Payara Micro 实现规范 1.1)。根据规范,我在 JAX-RS 配置类中注释@LoginConfig
:
Payara Micro 实现了一个过滤器,可以激活@RolesAllowed
JAX-RS 资源上的注释(通常只对 EJB 可用)。我正在利用此注释来识别 JWT 的声明,使用JsonWebToken
MP JWT auth 规范中的接口来确定是否允许用户发出 GET 请求以根据声明中的 id 访问用户的信息:
此外,根据Payara 的 MP JWT auth activation guide,我在我的META-INF/microprofile-config.properties
文件中提供以下配置属性供 Payara 验证:
应该注意的是,我正在@PermitAll
根据用户登录信息通过一个单独的端点出售我自己的 JWT。但是,这些似乎是正确构造的,因为它们可以很容易地调试,并且在jwt.io的调试器中验证了签名(不提供验证密钥,因为问题已经足够长了):
但是,@RolesAllowed
注释的行为似乎出乎意料。当我在将 JWT 不记名令牌作为授权 HTTP 标头传递时向端点发送 curl 时:
我收到以下回复:
在研究了 Payara 的源代码后,我发现这里收到了这个响应。
显然,当Principal
收到的 fromSecurityContext
为 null 并且@RolesAllowed
注释存在于 JAX-RS 资源中时,就会发生这种情况。然后显然调用了容器提供的身份验证模块,在 Payara 的情况下是 BASIC 身份验证:https ://github.com/payara/Payara/issues/2326#issuecomment-367855133 。但是,我不明白为什么在我指定@LoginConfig(authMethod="MP-JWT")
并提供 JWT 作为授权标头时使用 BASIC 身份验证。github上有与此相关的问题,但我无法找到有关修复内容的明确答案。
所以,我的问题是,我是否错误地解释了如何让 Payara 产生JsonWebToken
调用者的注射剂?如何修复此 SEND_FAILURE 响应?
gradle - index.html 未找到 payara micro
我有一个Java
应用程序,我正在使用Payara Micro 4.1.2.174
它来部署它。我正在尝试配置index.html
我放在文件夹中的文件src/main/webapp
。但是,无论我做什么,该文件都无法访问,当我尝试在 localhost: 上访问它时,我得到了 404 http://localhost:8080/index.html
。我正在使用 gradle 构建战争文件。我还检查了构建的战争文件,并且 index.html 文件位于存档的根目录。
我正在部署我的应用程序/
,所有路径也可以从以下位置开始/
:
在 [/] 加载应用程序 [ROOT]
我尝试在glassfish-web.xml
文件中添加以下内容,但没有帮助:
有什么我想念的吗?是否有可能index.html
在 Payara Micro 中有一个?
谢谢!
docker - 将外部文件添加到 payara 微应用程序类路径
我正在使用 payara micro 来运行我的战争应用程序。因为我需要访问的服务之一需要metro ws,所以我需要向应用程序提供一个wsit 客户端文件。
当我将它添加到战争中时,它工作正常,但由于我需要这个文件根据我正在部署的环境而有所不同,我需要将正确的文件作为外部依赖注入到服务器并且我只知道正确的一个在部署阶段。同时,我已经创建了所有的工件和 docker 镜像。
如何在不打开战争的情况下将此文件添加到应用程序手动添加并重新构建战争?我正在疯狂地寻找像外部模块这样的解决方案。
我尝试了 --addLibs 但它需要一个 jar。
java - payara-micro lib驱动jar文件真的有必要吗?
我在payara博客的一篇文章中看到,在web.xml中为jta创建数据源后,您必须将JDBC Driver jar放在WEB-INF内部的lib dir中,但我没有放,并且独立工作,做你知道是否真的有必要或为什么有效?
html5-audio - PayaraMicro 不支持 http 范围标头?
我在 Payara-Micro 上运行的 webapp 是一个收听音频文件并使用 javascriptcurrentTime
属性自由浏览它们的工具。所以浏览器有<audio src="...">
标签并获取音频文件,它向GET
服务器发送带有标题的http请求Range: bytes=0-
不幸的是Payara作为响应没有返回206
代码,Content-range: bytes 0-881403
但它返回200
,这具有当我使用示例时的效果,currentTime=10
变得currentTime
相等为0!
以前,这个应用程序在 PHP 中运行,带有 apache 服务器,并且 apache 支持range
标头。是否可以配置 PayaraMicro 或 Grizzly 以支持range
请求?或者,如果我在 PayaraMicro 前面放置一个 Apache 服务器,它会起作用吗?谢谢您的帮助!
docker - 如何访问 ENTRYPOINT dockerfile 中的构建参数
我正在尝试基于payara dockerimage在payara micro中部署一个应用程序,我需要在ENTRYPOINT(基本上我想访问ENTRYFORM中的构建参数)exec表单中传递一个争论snapshotversion,因为ENTRYPOINT的exec表单是首选:我的docker文件如下:
注释的 ENTRYPOINT 不起作用。容器日志显示部署无效。我在这里想念什么?另外,我该如何使用 CMD。有人可以发布一个例子。
jpa - @DataSourceDefinition 中的错误网址
问题
@DataSourceDefinition
提供url
属性,但将被忽略。如果 url 设置为,将建立到jdbc:postgres://database:5432/demo
的连接。通过将它们设置为,和直接localhost:5432
设置,相同的设置效果很好。serverName
portNumber
databaseName
演示
可以在https://github.com/ThomasPr/DataSourceDefinition找到一个说明此行为的小型演示项目
细节
工作示例✅</h3>
属性serverName
,portNumber
和databaseName
是单独设置的。database:5432
将成功建立与 postgres 的连接。
失败的例子❌</h3>
将再次使用工作示例中的相同设置,但这次只设置url
属性。结果是连接尝试localhost:5432
而不是database:5432
奇怪的例子
与失败示例中一样使用相同的 url 设置。但是serverName
,portNumber
和databaseName
被设置为空值。很奇怪:这一次连接database:5432
成功了。与失败示例的唯一区别是提到的三个空值。
例外
在Payara启动过程中,失败的情况下会出现如下异常:
java - 是否可以在 Maven payara-micro-maven-plugin 中设置端口以避免“地址已在使用”运行多个实例?
从以下位置下载生成的 microprofile/payara 演示应用程序:
启动第一个实例 (demo-service-a) 运行良好。
启动单独的实例(demo-service-b),获取...
我可以在哪里修改第二个实例的绑定端口 - 以避免上述异常?
pom.xml
我正在使用 Java 11 和 IDE Netbeans 11.1。
payara-micro-maven-plugin 版本:1.0.1
微配置文件版本:3.2
war - PayaraMicro 不会在 EJB 或 ApplicationScoped 上调用 @PreDestroy
我正在将 WAR 应用程序从 PayaraServer 迁移到 Payara Micro,以减少 RAM 使用。
我只是意识到使用 CTRL+C 停止实例时不会调用 EJB 上的 @PreDestroy。
是否有正确的方法来正确关闭 payaramicro 实例,因为我想执行一些操作。
感谢您的回答!
或者要停用 Payara Server 中的哪些服务以使用与 PayaraMicro 一样多的 RAM?
我使用的是 5.183 版本,我也尝试了 5.192。