RESTlet を介して REST を実装しています。これは、このような安らかな Web サービスを構築するための素晴らしいフレームワークです。習得が容易で、構文がコンパクトです。ただし、通常、誰か/プログラムが何らかのリソースにアクセスしたい場合、XMLを印刷/出力するのに時間がかかることがわかったので、JaxbRepresentationを使用します。私のコードを見てみましょう:
@Override
@Get
public Representation toXml() throws IOException {
if (this.requireAuthentication) {
if (!this.app.authenticate(getRequest(), getResponse()))
{
return new EmptyRepresentation();
}
}
//check if the representation already tried to be requested before
//and therefore the data has been in cache
Object dataInCache = this.app.getCachedData().get(getURI);
if (dataInCache != null) {
System.out.println("Representing from Cache");
//this is warning. unless we can check that dataInCache is of type T, we can
//get rid of this warning
this.dataToBeRepresented = (T)dataInCache;
} else {
System.out.println("NOT IN CACHE");
this.dataToBeRepresented = whenDataIsNotInCache();
//automatically add data to cache
this.app.getCachedData().put(getURI, this.dataToBeRepresented, cached_duration);
}
//now represent it (if not previously execute the EmptyRepresentation)
JaxbRepresentation<T> jaxb = new JaxbRepresentation<T>(dataToBeRepresented);
jaxb.setFormattedOutput(true);
return jaxb;
}
ご覧のとおり、あなたは私に尋ねたかもしれません。はい、Kitty-Cache を使用してキャッシュを実装しています。したがって、作成に費用がかかり、実際には 70 年間変更されないように見える XML がある場合は、キャッシュを使用します...また、おそらく静的データにも使用します。キャッシュの最大制限時間は、メモリに保持される 1 時間です。
出力をキャッシュしても、ハングしたり、部分的に印刷されたり、残りのドキュメントを印刷するまでに時間がかかったりするなど、出力が応答しないことがあります。XML ドキュメントは、ブラウザとプログラムからアクセスでき、GET を使用しました。
実際には何が問題なのですか?できればRESTletの開発者からの回答も教えていただきたいです。ありがとう