gpt4 book ai didi

java - 在 AWS lambda 中运行 EJB 应用程序

转载 作者:行者123 更新时间:2023-12-02 09:26:13 24 4
gpt4 key购买 nike

我们有一个基于EJB的定制java框架。使用该框架作为依赖项(意味着扩展功能),我们有一些应用程序(因此间接地,这些应用程序也是 EJB)。该应用程序托管在一台本地 jboss 服务器上。

现在,我们想要删除此本地服务器并将此应用程序移至 AWS lambda,因为此应用程序每天仅使用一次(我的意思是每天仅调用此应用程序一次)。此外,标准是不触及现有的应用程序代码。我们可以编写一些类来添加 lambda 处理程序或其他内容,但我们可以修改现有的应用程序代码或体系结构。 (一些限制我真的很想重写但没有选择)。

有人可以建议是否可以从 AWS-lambda 运行基于 EJB 的 JAVA 应用程序(今天托管在本地 jboss 上)吗? (我的意思是,我们可以在 lambda 上托管它吗?)。

这是该 EJB 应用程序的起点:

package packagename;

//various imports here
import javax.ejb.*;
import javax.jms.MessageListener;

@MessageDriven(messageListenerInterface=MessageListener.class,
activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
@ActivationConfigProperty(propertyName = "destination", propertyValue = "java:global/queue/queuename"),
@ActivationConfigProperty(propertyName="hostName", propertyValue="${jms.queue.manager.host}"),
@ActivationConfigProperty(propertyName="port", propertyValue="${jms.queue.manager.port}"),
@ActivationConfigProperty(propertyName="channel", propertyValue="${jms.queue.manager.channel}"),
@ActivationConfigProperty(propertyName="queueManager", propertyValue="${jms.queue.manager.name}"),
@ActivationConfigProperty(propertyName="useJNDI", propertyValue="true")
})
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
public class BatchInvoker extends BatchInvokerServiceMDB {

@EJB
public ImportPlannedCoursesJob importPlannedCoursesJob;

}

最佳答案

应该是可以的,但是 JBoss 的启动速度非常慢。

在 Lambda 中,启动会非常频繁地发生(每个并行调用都会启动一次)。而且容器是短暂的(它们在几分钟/小时后关闭)。

还有超时限制(最多 15 分钟超时)。因此,如果 JBoss 启动需要 10 分钟,那么您只剩下 5 分钟来执行请求。

此外,这样的延迟是否可以接受?我建议也许另一个解决方案 - Elastic Beanstalk

关于java - 在 AWS lambda 中运行 EJB 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58321797/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com