我经常在我的Java应用程序中使用Jersey简单服务器作为Web服务。每当我这样做时,我似乎只能从我的应用程序(main
类)获取属性,如果它被设置为单例。所以,我似乎只能用MainClass.getInstance()
获取信息。
我知道我可以让Jersey监听器在Jersey中使用某种单例,但这只意味着侦听器对象将在Jersey中实例化一次而不是每一个请求:监听器不是真正的单例,因为它仍然需要一个public
构造函数。
有没有办法访问我的应用程序类而不是单独的对象本身?
以下是相关代码:
public class JerseyService {
private MainClass mainClass;
private int port = 8080;
private DefaultResourceConfig config;
private Closeable jerseyServer;
public JerseyService() {
config = new DefaultResourceConfig(JerseyListener.class); // Attach the listener (resource) to the Jersey server
jerseyServer = SimpleServerFactory.create("http://0.0.0.0:" + jerseyPort, config);
}
public String getData() {
return "somedata";
}
}
@Path("/")
public class JerseyListener {
@Path("getData")
@GET
@Produces("application/json")
public Response getData() {
// How can i call getData() from JerseyService
// without JerseyService being a singleton??
return Response.status(Response.Status.OK).entity("{<jsondata>}").build();
}
}