为什么RESTlet有时需要花时间来打印XML

时间:2013-08-29 10:48:04

标签: java rest restlet restlet-2.0

我正在通过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实现Cache。因此,如果某些生产成本高昂的XML,并且真的看起来永远不会改变七十年,那么我将使用缓存...我也将它用于可能的静态数据。缓存的最长时间限制是在内存中保留一小时。

即使我缓存输出,有时输出也是无响应的,例如挂起,部分打印,并且在打印剩余文档之前需要时间。 XML文档可以通过浏览器和程序访问,它使用GET。

实际上是什么问题?如果可能的话,我也很想知道RESTlet开发人员的答案。感谢

0 个答案:

没有答案