81,122
社区成员




@controller
@requestMapping("/infopublish")
@Scope("prototype")
public class InfoPublishController{
@RequestMapping(value="/getsubscribeinfo.do",method=RequestMethod.GET,header="Accept=text/plain")
public @ResponseBody String GetSubscribeInfo(@RequestParam String userInfo){
return UserBox.GetInstance().GetUserInfo(userInfo);
}
@RequestMapping(value="/addsubscribe.do",method=RequestMethod.GET,header="Accept=text/plain")
public @ResponseBody String AddSubscribe(@RequestParam String userInfo){
if( UserBox.GetInstance().AddUserBox(userInfo))
return "true";
else
return "false";
}
@RequestMapping(value="/publishinfo.do",method=RequestMethod.POST,header="Accept=text/plain")
public @ResponseBody String PublishInfo(@RequestParam String userInfo, @RequestParam String info){
if( UserBox.GetInstance().PutInfoToBox(userInfo,info))
return "true";
else
return "false";
}
}
public class UserBox{
//单例代码省略
private Map<String, Queue<String>> box;
public Boolean AddUserBox(String userId){
try{
synchronized(this){
if(box.containsKey(userId)){ return false;}
else{
Queue<String> userBox = new LinkedBlockingQueue<String>();
box.put(userId, userBox);
return true;
}
}
}
catch(Exception e){return false;}
}
public String GetUserInfo(String userId){
if(!box.containsKey(userId)) return "";
else{
try{
while(box.get(userId).size()==0){
Thread.sleep((long)1000.0);
}
String message = box.get(userId).poll();
return message;
}
catch(Exception e){return "";}
}
}
public Boolean PutInfoToBox(String userId, String infoJson){
try{
synchronized(this){
if(!box.containsKey(userId)) return false;
else{
Queue<String> userBox = box.get(userId);
userBox.offer(infoJson);
return true;
}
}
}
catch(Exception e){return false;}
}
}
while(true){
string url="";
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create("http://localhost:8080/infopublish/getsubscribeinfo.do?userInfo="+args[0]);
myRequest.Method = "GET";
myRequest.ContentType = "text/plain:charset-UTF-8";
//myRequest.Timeout = 5000;
//Stream newStream = myRequest.GetRequestStream();//这里提示无法连接到远程服务器
//newStream.Close();
HttpWebResponse res = (HttpWebResponse)myRequest.GetResponse();
stream responseStream = res.GetResponseStream();
StreamReader sr = new StreamReader(responseStream, Encoding.GetEncoding("utf-8"));
string backstr = sr.ReadToEnd();
sr.Close();
responseStream.close();
res.Close();
console.writeline(backstr);
}