我使用这些配置构建基于JAX-RS的Web服务:
实际上,该程序是使用jax-rs注释在java中围绕一个主servlet开发的。这是"切入点"为我的应用程序,以处理来自服务器的响应/请求。总体目标是实现一个包含多个html页面的Web项目,只能使用JAX-RS控制器。
由于用户以html格式发布的信息,我面临需求问题,但这些输入需要在同一主servlet的@GET方法中检索。 但是,应用程序不应使用静态参数检索用户的输入:它应该是STATELESS(要求),但仍然在多个线程之间共享信息。
如何在不使用静态内容(变量 userParamList )的情况下完成,如下所示?我想知道这个字段是否可以使用简单的get / set,但我知道Jax-RS线程是单独处理的,所以...... :(
@Path("/rest")
public class BackendApp
{
private static String[] defaultParamList = {"timestamp","plcVersion","udmVersion","iotVersion","deviceName","manufacturer","model","sdk","primitiveName","result","status"};
private static String[] userParamList = {};
private static ArrayList<Document> container;
private static java.nio.file.Path javaNIOPath;
private static MongoClientURI connectionString = new MongoClientURI("mongodb://localhost:27017");
private final MongoClient mongoClient;
public BackendApp()
{
this(new MongoClient(connectionString));
}
@POST
@Path("/postList") // FIRST pot that occurs at the beginning of this context (index.html at the root)
@Produces("text/html")
public Viewable getParamList(@FormParam("textarea") String textarea) throws IOException
{
userParamList = textarea.replaceAll("\\s*\\n\\s*","").split(","); // REGEX expression filtering all the (multiple) blank spaces and carriage return
return new Viewable("/query.html");
}
@GET
@Path("/result")
@Produces("text/html")
public Response getHTML(@Context UriInfo uriInfo) throws IOException
{
MongoDatabase mongoDB = mongoClient.getDatabase("JSONRepository");
MongoCollection<Document> coll = mongoDB.getCollection("TestColl");
container = mongo.getParameters(userParamList, coll, queryParams);
// userParamList is here static...
// GET STUFF.....
}
}
感谢您的所有答案。
PS:静态内容工作得很好......所以问题更多地集中在与泽西的 mulitple线程的问题上。