搜了很久,也没找到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 } /** * Initialization of the servlet. <br> * * @throws ServletException if an error occurs */ public void init() throws ServletException { // Put your code here } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //System.out.println("doGet"); doPost(request,response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("doPost"); InputStream in = request.getInputStream(); ObjectInputStream ois = new ObjectInputStream(in); try{ Tick tick = (Tick)(ois.readObject()); System.out.println(tick.getAskPrice()); System.out.println(tick.getBidPrice()); System.out.println(tick.getMidPrice()); }catch(Exception e){} } public void push(String para){ MessageBroker msgBroker = MessageBroker.getMessageBroker(null); String clientID = UUIDUtils.createUUID(); // Tick tick = new Tick(); // tick.setAskPrice(new BigDecimal("100")); // tick.setBidPrice(new BigDecimal("100")); // tick.setMidPrice(new BigDecimal("100")); // tick.setTickTime(new Date()); // // tick.setSeqno(name); AsyncMessage msg = new AsyncMessage(); msg.setDestination("tick-data-feed"); msg.setHeader("DSSubtopic", "tick"); msg.setClientId(clientID); msg.setMessageId(UUIDUtils.createUUID()); msg.setTimestamp(System.currentTimeMillis()); msg.setBody(para); msgBroker.routeMessageToService(msg, null); } }
Java代码
package bean; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; public class Tick implements Serializable { private String askPrice = "aaaaaaaa"; private String bidPrice = "bbbbbbbb"; private String midPrice = "cccccccc"; .......... }