私はJavaアプリケーションにプッシュされているXMLを読み込もうとしています。私はもともとガラス張りのサーバーで働いていました。 GlassFishの中に作業コードは次のとおりです。Raw XML入力ストリームからのプッシュは、XMLの最初の行だけをキャプチャします
public class XMLPush implements Serializable
{
public void processXML()
{
StringBuilder sb = new StringBuilder();
BufferedReader br = null;
try
{
br = ((HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest()).getReader();
String s = null;
while((s = br.readLine()) != null)
{
sb.append (s);
}
//other code to process xml
...........
.............................
}catch(Exception ex)
{
XMLCreator.exceptionOutput ("processXML","Exception",ex);
}
....
.....
}//processXML
}//class
それは完璧に動作しますが、私のクライアントはそのサーバー上のGlassFishを持つことができません。私はPHPから生のXMLを取得しようとしたが、私はそれを動作させることができませんでした。私はソケットを開いてxmlプッシュを手動で待ち受けることにしました。ここでプッシュを受信するための私のコードです:私は多くのソケットプログラミングを行っていない
public class ListenerService extends Thread
{
private BufferedReader reader = null;
private String line;
public ListenerService (Socket connection )thows Exception
{
this.reader = new BufferedReader (new InputStreamReader (connection.getInputStream()));
this.line = null;
}//ListenerService
@Override
public void run()
{
try
{
while ((this.line = this.reader.readLine()) != null)
{
System.out.println (this.line);
........
}//while
} System.out.println (ex.toString());
}
} catch (Exception ex)
{
...
}//catch
}//run
が、私は一週間のために読んだものから文字列にXMLを渡すことは悪いことです。私は間違って何をしているのですか?それはなぜglassfishサーバーで動作するのですか?そして、ソケットを開いただけではそれはありませんか?
これは私がプッシュから受け取ることのすべてです:XMLは行かなかった
PUT /?XML_EXPORT_REASON=ResponseLoop&TIMESTAMP=1292559547 HTTP/1.1
Host: ************************
Accept: */*
Content-Length: 470346
Expect: 100-continue
<?xml version="1.0" encoding="UTF-8" ?>
?私はそれを文字列にしているからですか?私はXMLをつかんでファイルに保存してから処理する必要があります。他のすべてが動作しますが、これは助けになります。
返信いただきありがとうございます。私は実際の問題を発見した。 – pqsk