首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >http://AAA.BBB.CCC.DDD:8080/myapp/ uri的handleURI:'‘返回不明确的结果(Vaadin6)

http://AAA.BBB.CCC.DDD:8080/myapp/ uri的handleURI:'‘返回不明确的结果(Vaadin6)
EN

Stack Overflow用户
提问于 2014-10-17 04:27:51
回答 1查看 371关注 0票数 0

在我的Vaadin 6应用程序中,我有时会得到以下错误:

代码语言:javascript
复制
SEVERE: Terminal error:
java.lang.RuntimeException: handleURI for http://AAA.BBB.CCC.DDD:8080/myapp/ uri: '' returns ambigious result.
at com.vaadin.ui.Window.handleURI(Window.java:432)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleURI(AbstractCommunicationManager.java:2291)
at com.vaadin.terminal.gwt.server.CommunicationManager.handleURI(CommunicationManager.java:370)
at com.vaadin.terminal.gwt.server.AbstractApplicationServlet.handleURI(AbstractApplicationServlet.java:1099)
at com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java:535)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

根据Vaadin source的说法,它发生在以下方法中:

代码语言:javascript
复制
public DownloadStream handleURI(URL context, String relativeUri) {

    DownloadStream result = null;
    if (uriHandlerList != null) {
        Object[] handlers;
        synchronized (uriHandlerList) {
            handlers = uriHandlerList.toArray();
        }
        for (int i = 0; i < handlers.length; i++) {
            final DownloadStream ds = ((URIHandler) handlers[i]).handleURI(
                    context, relativeUri);
            if (ds != null) {
                if (result != null) {
                    throw new RuntimeException("handleURI for " + context
                            + " uri: '" + relativeUri
                            + "' returns ambigious result.");
                }
                result = ds;
            }
        }
    }
    return result;
}

我实际上在列生成器中创建了一个DownloadStream (为了在表中显示图像):

代码语言:javascript
复制
public class ImageColumnGenerator implements Table.ColumnGenerator {
    private static final Logger LOGGER = LoggerFactory.getLogger(ImageColumnGenerator.class);

    public final static String IMAGE_FIELD = "image";

    public Object generateCell(final Table aTable, final Object aItemId, final Object aColumnId) {
        if (!IMAGE_FIELD.equals(aColumnId)) {
            return null;
        }
        final BeanItem<UserProductImageBean> beanItem = (BeanItem<UserProductImageBean>)
                aTable.getItem(aItemId);

        final StreamResource streamResource = new StreamResource(new StreamResource.StreamSource() {
            public InputStream getStream() {
                return new ByteArrayInputStream(beanItem.getBean().getImageData());
            }
        },
                beanItem.getBean().getFileName(),
                MyApplication.getInstance());

        LOGGER.debug("imageResource: " + streamResource);
        final Embedded embedded = new Embedded("", streamResource);


        return embedded;
    }
}

beanItem.getBean().getImageData()是一个包含图像数据的字节数组(byte[]),它是我从web服务中获得的。

MyApplication.getInstance()的定义如下:

代码语言:javascript
复制
public class MyApplication extends Application implements ApplicationContext.TransactionListener
{
    private static ThreadLocal<MyApplication> currentApplication =
            new ThreadLocal<MyApplication> ();

    public static MyApplication getInstance()
    {
        return currentApplication.get ();
    }
}

我能做些什么来修复前面提到的(严重)错误?

EN

回答 1

Stack Overflow用户

发布于 2014-10-17 04:40:23

只要没人接就行。我并不是什么地狱上面的专家,但是-试着找出这个错误出现在哪种urls上,并在将它们提供给DownloadStream之前对它们做些什么

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26413325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档