问题标签 [java-ee-8]

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.

0 投票
1 回答
1021 浏览

jakarta-ee - Weblogic Server 何时支持 Java EE 8?

除了此处对 CY2018 的引用之外。我发现很难弄清楚 Weblogic Server 版本何时(或是否)将支持 Java EE 8?

0 投票
0 回答
291 浏览

java - RESTEasy 为不满足 @RolesAllowed 的请求返回 http 代码 200

我使用 WildFly 16 并正在对 Java EE 8 Security API 进行一些实验。我有一个这样的 JAX-RS 端点(在 web.xml、jboss-web.xml 中有一些定义):

正如我所料,没有“USER”角色的请求不会到达那里的代码,但这些请求会获得代码为 200 的 http 响应。我想为这些请求返回“401 Unauthorized”,而不是 200。

根据 RESTEasy 的一些文档,它的行为应该是这样的:

Resteasy如何做授权?嗯,它真的很简单。它只是查看一个方法是否用@RolesAllowed 注释,然后只执行HttpServletRequest.isUserInRole。如果其中一个@RolesAllowed 通过,则允许该请求,否则,将使用 401(未授权)响应代码发回响应。

但就我而言,情况并非如此。我怎样才能让它这样工作?

这是我的实验实现的整个项目。它还有一个测试用例,显示了我的期望。它可以运行./mvnw clean verify

0 投票
0 回答
229 浏览

jakarta-mail - Java 邮件错误。Transport.send(message) 抛出 java.lang.NoClassDefFoundError: sun/security/ssl/EllipticCurvesExtension

我正在尝试通过 TLS 使用 Gmail SMTP 发送电子邮件。下面的代码似乎是正确的,但我在 Transport.send(message) 收到错误。我已经尝试了所有可以在互联网上找到的解决方案,包括这个都无济于事。

这是我的依赖:

和发送电子邮件代码:

我在用:

Ubuntu 18.04 LTS Netbeans 8.2 Payara 服务器 5.183

堆栈跟踪:

0 投票
0 回答
930 浏览

jboss - 无法在 CDI @RequestScoped 托管 Bean 中注入 ExternalContext 或 RequestParam

在网上搜索我发现应该可以将一些方便的 JSF 对象@Inject 到 CDI bean 中,这些对象应该由 JSF 生成并通过 javax.faces.annotation.* 中的限定符公开(如 @RequestMap 或 @SessionMap)。

但是,我无法将这些资源@Inject 注入 CDI Bean。即使注入ExternalContextFacesContext失败,如 JSF 2.3-spec 中所述,@Inject 以及以下内容应该是可能的:

  • javax.faces.application.ResourceHandler
  • javax.faces.context.Flash

  • javax.servlet.http.HttpSession <--这个正在工作

应用程序启动时显示的错误:

在注入点 [BackedAnnotatedField] @Inject report.SimpleRequestParamReportProvider.facesContext 具有限定符 @Default 的类型 FacesContext 的依赖关系不满足

我正在使用符合 JSF 2.3 的JBoss EAP 7.2 https://access.redhat.com/articles/113373

有没有其他人遇到过同样的问题?有什么我想念的吗?

编辑 这是我正在使用的 WEB-INF/faces-config-xml

编辑 2:一旦我添加了 @FacesConfig 注释的 java 类,JSF 对象的注入就可以工作:

0 投票
1 回答
114 浏览

jakarta-ee - ActiveMQ 嵌入式推荐

我从事一个基于 JavaEE 8 (Liberty 18.0.0.4) 的项目。

我想知道:
1)在我自己的应用程序中嵌入activeMQ或在Liberty应用程序服务器上集成然后使用JMS api有什么区别?
2)关于嵌入式activeMQ有什么建议?

0 投票
1 回答
36 浏览

batch-processing - 重新加载分区步骤以创建另一组线程

我有大量的报告加载到块分区步骤中。每个报告将被进一步处理以生成单独的报告。但是,如果我在分区步骤中加载 50k 的报告,这会使服务器过载并且速度会变得很慢。而不是我更喜欢,分区步骤加载 3k 的报告列表,处理它,然后在分区步骤上加载另一个 3k 报告.. 继续相同,直到 50k 报告得到处理。

一旦分区映射器处理了 3k 个数据报告,则它必须检查下一个可用列表。如果可用,则应使用下一组要处理的 3k 报告重置分区。

0 投票
3 回答
471 浏览

batch-processing - 如何轮询 BatchStatus 以获取正在执行的作业?

我有一个必须为项目列表重复的批处理作业。所以我有一个“父”作业,它使用批处理步骤来加载列表并为列表中的每个 id 启动一个子作业。每个子作业都是使用JobOperator和使用Properties类的参数启动的,这可以按预期工作。

我必须检索批处理状态并等待子作业完成,以便遍历列表。我正在尝试使用JobExecution类获取批处理状态或退出状态,但是JobExecution没有检索子作业的批处理状态。

相反,我总是看到 的批处理状态STARTED,即使在子作业完成后也是如此。

我的代码如下所示:

我想知道,如何检索从批处理启动的子作业的批处理或退出状态。为什么我继续看到 BatchStatus STARTED

0 投票
2 回答
411 浏览

spring - 嵌入式tomcat有什么问题

无法运行我的项目

我只是在学习Springboot,按照互联网的说明我建立了一个新项目,我使用Eclipse Oxygen + Maven(with Embedded Tomcat) + Springboot,我按照说明运行项目,但收到以下错误消息。我通过修改文件多次更改端口"application.properties",但没有成功。我检查了所有端口,它们的状态是"listening".

2019-07-03 04:04:16.256 错误 16132 --- [main] org.apache.catalina.util.LifecycleBase:无法启动组件 [连接器 [HTTP/1.1-17500]]

org.apache.catalina.LifecycleException:协议处理程序在 org.apache.catalina.connector.Connector.startInternal(Connector.java:1001) 处启动失败 ~[tomcat-embed-core-9.0.13.jar:9.0.13]


应用程序无法启动


描述:

配置为侦听端口 8080 的 Tomcat 连接器无法启动。该端口可能已在使用中,或者连接器可能配置错误。

0 投票
1 回答
127 浏览

open-liberty - Servlet 中的异步功能

我只是回到Servlet-3.x功能并探索它。如果我没记错的话,在 Servlet-3.x 之前,它是每个请求模型的线程,并且它会用完池中的线程,从而导致大量传入流量。

因此,对于 Servlet-3.x,它说它是异步的并且不会保持线程被阻塞,而是立即释放它们,而只是委派了任务。

这是我的解释,

考虑服务器线程池中有 2 个线程

对于新的 Async Servlet 请求R1,有一个线程T1,这T1会将任务委托给客户端T2T1立即响应客户端。

问题:T2从服务器线程池创建的吗?如果是这样,我不明白这一点。

  • 情况1:如果是旧的Synchronous Servlet 请求T1会一直忙于运行I/O 任务,

  • 情况2:如果是异步Servlet调用T2正忙于运行I/O任务。

  • 在这两种情况下,其中一个都很忙。

我尝试使用openliberty应用服务器中的示例异步 servlet 进行检查,下面是从我的示例演示 Servlet 中捕获的示例日志。

如上所示,Default Executor-thread-116立即释放并将长时间运行的任务委托给Default Executor-thread-54,但我不确定它们是否来自 App Server 线程池。如果是这样,为什么不能只做Default Executor-thread-116任务而不是委派?

有人可以对 JavaEE 中 Servlet 的这种异步行为有所了解吗

0 投票
1 回答
726 浏览

java - Glassfish 5 在部署时创建 EAR 文件的空临时副本

我正在尝试将 EAR 文件部署到 Glassfish 5 服务器。确切的版本是GlassFish Server Open Source Edition 5.0 (build 25). 部署是通过管理 GUI 完成的,并列出了已放置在域的 applib 文件夹中的一个附加库。尝试部署时,它立即失败并显示以下消息Error occurred during deployment: java.io.IOException: invalid zip file: file:/C:/glassfish5/glassfish/tmp/(ear_file_name).ear. Please see server.log for more details.

文件名将是 EAR 文件的名称,其后带有某种形式的时间戳或随机数。我检查了 temp 目录,可以看到在那里创建了一个 0 字节大小的 EAR 文件。最初这是 Windows 临时文件夹,我怀疑存在访问问题,因此我将 JVM 设置为对临时文件使用不同的文件夹,如上所示。这也失败了。我尝试使用具有管理员权限的用户运行 Glassfish,但再次无济于事。

可以做些什么来解决这个问题?

附加信息:

  • EAR 文件与 Glassfish 服务器位于同一主机上,它不会通过某个远程主机上传到 Glassfish 管理控制台。我正在本地主机上打开 GUI(这是我通过远程桌面访问的 Windows 机器)。
  • 我不是通过 Netbeans 部署的。我通过 Glassfish 管理控制台进行部署,默认端口 4848。浏览器是 Google Chrome。
  • asadmin使用提示符中的 deploy 命令(或直接通过)通过命令行进行部署asadmin deploy --libraries=[jar in applibs] [ear file]工作正常。

部署时来自服务器的日志文件如下: