gpt4 book ai didi

java - 如何构建单一访问 Web 服务?

转载 作者:行者123 更新时间:2023-12-01 05:50:27 25 4
gpt4 key购买 nike

我在 Weblogic 上有一个 Jax-RS Jersey Web 服务。它运行良好,但返回大量数据。问题是,如果我同时有超过 4 个服务调用,我用完了服务器上的所有 JVM 内存,那么一切都会停止工作,我必须重新启动。

如何将服务限制为仅运行 2 或 3 个实例并让其他调用等待?

最佳答案

您如何返回数据?您是否创建了整个对象以返回到内存中?如果是这样,那么您可能需要考虑流式传输响应。

您能否向我们介绍一下您的服务正在做什么?

编辑:
您可以像这样流式传输内容(例如来自 ResultSet 的数据);

@GET
public MyResultStream getData()
{
ResultSet rs = queryDatabase();
return new MyResultStream(rs);
}

您需要自己提供 MyResultStream;

public class MyResultStream implements javax.ws.rs.core.StreamingOutput
{
private ResultSet rs;

public MyResultStream (ResultSet rs)
{
this.rs = rs;
}

public void write(OutputStream output)
{
//write any document pre-able
// for example <results>

while (rs.next())
{
//get the data from the ResultSet and write it to the output in XML form
// for example <result><foo>bar</foo></result>
}

//write any document post-amble
// for example </results>
}
}

请记住,您必须以某种方式关闭 ResultSet

关于java - 如何构建单一访问 Web 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4851803/

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