为了实现BlazeDS的实时推送功能,找到了个用Servlet实现的例子。但是例子采用的是线程每秒推送,这样有些浪费资源。
搜了很久,也没找到Java类里调用Servlet的例子,只好用Post方法传对象。
发送POST的例子在 : http://lodachi.javaeye.com/?show_full=true
Java代码
package dbConn;
import java.io.InputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import bean.Tick;
import flex.messaging.util.URLEncoder;
public class TestAction {
public static void main(String[] args) throws Exception{
TestAction test = new TestAction();
test.test();
}
public void test() throws Exception {
URL url = new URL("http://localhost:8080/HRC/servlet/DataPushServlet");
HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
urlConn.setDoOutput(true);
urlConn.setDoInput(true);
urlConn.setUseCaches(false);
urlConn.setRequestProperty("Content-type","application/x-java-serialized-object");
urlConn.setRequestMethod("POST");
urlConn.connect();
OutputStream outStrm = urlConn.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(outStrm);
Tick tick = new Tick();
oos.writeObject(tick);
oos.flush();
oos.close();
InputStream inStrm = urlConn.getInputStream();
}
}
Java代码
package servlet;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.math.BigDecimal;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import bean.Tick;
import flex.messaging.MessageBroker;
import flex.messaging.messages.AsyncMessage;
import flex.messaging.util.UUIDUtils;
public class DataPushServlet extends HttpServlet {
public DataPushServlet() {
super();
}
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}