【发布时间】:2012-12-26 23:43:19
【问题描述】:
我正在通过 servlet 和 db 处理程序 java 类从数据库中获取一些数据,并将其托管在 url。由于数据库正在发生变化,我只注意托管更改而不是整个数据库数据。
我正在通过浏览器获得所需的功能,即每次(手动)重新加载后,我都会根据我的要求获得数据,
1. at the first page load, entire data gets displayed.
2. at subsequent reloads, I get either null data if there is no change in the database, or the appended rows if the database extends. (the database can only extend).
但是在 java 程序中,我没有得到相同的功能。使用HttpUrlConnection的java程序。
这是 servlet 的 java 客户端的代码...
public class HTTPClient implements Runnable {
private CallbackInterface callbackinterface;
private URL url;
private HttpURLConnection http;
private InputStream response;
private String previousMessage = "";
public HTTPClient() {
try {
url = new URL("http://localhost:8080/RESTful-Server/index.jsp");
http = (HttpURLConnection) url.openConnection();
http.connect();
} catch (IOException e) {
}
}
@Override
public void run() {
while (true) {
try {
String currentmessage = "";
response = http.getInputStream();
if (http.getResponseCode() == HttpURLConnection.HTTP_OK) {
BufferedReader buffread = new BufferedReader(new InputStreamReader(response));
String line;
for (; (line = buffread.readLine()) != null;) {
currentmessage += line;
}
if ((!currentmessage.equals(previousMessage)
|| !previousMessage.equals(""))
&& !currentmessage.equals("")) {
//this.callbackinterface.event(currentmessage);\
System.out.println(currentmessage + "\t" + previousMessage);
}
previousMessage = currentmessage;
Thread.sleep(2500);
} else {
throw new IOException();
}
} catch (IOException | InterruptedException e) {
System.err.println("Exception" + e);
}
}
}
显示的类是一个线程,它每 2.5 秒读取一次连接。如果它在getline() 中获得了重要的信息,它会向工作人员方法发出回调,该方法负责处理剩余的事情。
我认为问题是因为类变量 conn,并且在浏览器中重新加载没有被复制..
知道怎么做吗?
【问题讨论】:
标签: java web-services http servlets