Google App Engine プラットフォーム上の JSF のプログラムに問題があります。FileOutputStreamクラスがGAEでサポートされていないことを読んだとき、Java EEでのチャットアプリケーションの実装はほぼ完了しました。このクラス オブジェクトを使用してファイルを作成し、その中にチャット メッセージを書き込みます。スクリプトを使用すると、このファイルが index.xhtml Web サイトに読み込まれ、更新されます。
このアプリケーションを完成させるためにFileOutputStreamを置き換えることができるクラスがわからないため、助けが必要です。Pythonで例を見つけたので、これが可能であることはわかっていますが、Javaで実装するにはどうすればよいですか?
どんな助けにも感謝します。
以下に、 FileOutputSream操作を含む ChatBean クラスの一部を貼り付けます。
@Stateful
@ApplicationScoped
@ManagedBean(name="Chat")
public class ChatBean {
private List<String> users = new ArrayList<String>();
private String newUser;
FileOutputStream chatHtmlBufferWriter;
public ChatBean () throws IOException {
ServletContext ctx = (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext();
String chatHtmlPath = ctx.getRealPath("/") + "chat";
try {
this.chatHtmlBufferWriter = new FileOutputStream(chatHtmlPath);
this.chatHtmlBufferWriter.write("Start chatu ąęć. <br />".getBytes("UTF-8"));
} catch (IOException ex) {
this.chatHtmlBufferWriter.close();
throw ex;
}
users.add("Admin");
}
@PreDestroy
public void closeFileBuffor() throws Exception {
this.chatHtmlBufferWriter.close();
}
public String addMessage(String msg) throws IOException {
this.chatHtmlBufferWriter.write(msg.getBytes("UTF-8"));
FacesContext.getCurrentInstance().getExternalContext().redirect("index.xhtml");
return "index";
}
...
}
index.xhtml ファイル内のスクリプト:
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
var currPos = 0;
var loadChat = function() {
$("#chatForm\\:chatbox").load('chat');
currPos = $(".chat")[0].scrollHeight;
$(".chat").scrollTop(currPos);
}
var scrollChat = function() {
$("#chatForm\\:chatbox").load('chat');
$(".chat").scrollTop(currPos);
}
var currPos;
$(document).ready(function() {
$("#chatForm\\:chatbox").load('chat', function(){
loadChat();
});
var refreshId = setInterval(function() {
scrollChat();
}, 1000);
$.ajaxSetup({ cache: false });
$("#chatForm\\:chatbox").scroll(function() {
currPos = $(".chat").scrollTop();
});
});
</script>