首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以从EJB激活servlets ()

是否可以从EJB激活servlets ()
EN

Stack Overflow用户
提问于 2011-11-15 07:03:49
回答 1查看 301关注 0票数 0

我有一个独特的场景,我使用servlet通过对数据库的调用动态地输出到浏览器。内容类型是RSS-XML,因此它可以从数据库更新RSS提要xml。这工作得很好。但是,我也有一个可以作为webservice @WebService访问的EJB。这样,它的所有公共方法都可以通过SOAP事务访问。我也成功地实现了这一点。因此,我通过Java-WS/SOAP更新数据库,我的问题是我没有同时更新servlet的doGet(),这意味着它没有更新Servlet调用--即使数据库已经成功更新。

如何从EJB强制doGet()调用我的servlet?更新这些HTML/XML标记的唯一方法是调用Servlet,从而调用doGet()方法。

谢谢。

为清楚起见进行编辑:我的Servlet当前是作为URL从jsp页面访问的。它被引用为人们可以点击的链接。一旦人们点击它,它就会很好地更新,但因为它是一个RSS提要,所以当我向数据库添加数据时,我也希望能够调用/更新提要。到目前为止,我可以添加数据,但是提要没有更新,因为我不知道如何在业务逻辑中调用doGet()。

下面是我的servlet的相关部分:

代码语言:javascript
复制
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws     ServletException, IOException {

    Statuses = rssbean.arrayUpdates();

    XMLOutputFactory factory = XMLOutputFactory.newInstance();
    try {
        XMLStreamWriter writer = factory.createXMLStreamWriter(response.getOutputStream());
        response.setContentType("application/rss+xml; charset=UTF-8");


        writer.writeStartDocument();
        writer.writeStartElement("rss");
        writer.writeAttribute("version", "2.0");
        writer.writeStartElement("channel");
for(int i = 0; i < (Statuses.length); i++){
                writer.writeStartElement("item");
                    writer.writeStartElement("title");
                        writer.writeCharacters(Statuses[i]);
                    writer.writeEndElement();
                    writer.writeStartElement("link");
                        writer.writeCharacters("http://www.link.com");
                    writer.writeEndElement();
                    writer.writeStartElement("description");

                    writer.writeEndElement();
                writer.writeEndElement();

如您所见,我通过doGet()动态地创建了这个.rss文件。当您链接到它时,这可以很好地工作,但是我不确定如何从我的EJB (而不是浏览器)运行这些编写器调用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-15 07:26:30

rssBean.arrayUpdates()每次都需要查询数据库并返回结果。如果它返回一些预先存在的数据,那么这将不起作用。

单击链接并访问servlet后,servlet将从数据库中提取信息并将结果提供给客户端。

当您通过web服务更新数据时,不需要调用servlet来确保数据更新,正如您所期望的那样。

HTTP是请求/响应。一旦向客户端提供了响应,他们就必须刷新页面或单击链接来刷新内容。

另请参阅高速缓存控制http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html的headers

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

https://stackoverflow.com/questions/8129471

复制
相关文章

相似问题

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