Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从HttpServlet执行重力数据推送_Java_Spring_Http_Servlets_Graniteds - Fatal编程技术网

Java 如何从HttpServlet执行重力数据推送

Java 如何从HttpServlet执行重力数据推送,java,spring,http,servlets,graniteds,Java,Spring,Http,Servlets,Graniteds,前几天我在玩Granieds教程(使用Spring服务器和AIR客户端) “本教程介绍如何构建一个简单的数据应用程序 管理用户帐户数据库。所有连接的客户端都是 通知并与数据更新同步,使用长 轮询通道。” 很遗憾,我找不到任何javascript客户端库或示例。 我创建了一个HttpServlet,以使用http(ajax)请求管理(例如添加实体)persistense上下文。 我的TestServlet.java @WebServlet("/TestServlet") public class

前几天我在玩Granieds教程(使用Spring服务器和AIR客户端)

“本教程介绍如何构建一个简单的数据应用程序 管理用户帐户数据库。所有连接的客户端都是 通知并与数据更新同步,使用长 轮询通道。”

很遗憾,我找不到任何javascript客户端库或示例。
我创建了一个HttpServlet,以使用http(ajax)请求管理(例如添加实体)persistense上下文。

我的TestServlet.java

@WebServlet("/TestServlet")
public class TestServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;     

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(this.getServletContext());
        AccountService srvObject = (AccountService) wac.getBean("testService");
            //testService mean spring service annotation parameter
        Account emp = new Account();
               emp.setName(request.getParameter("name"));
               emp.setEmail(request.getParameter("email"));
        srvObject.save(emp);
        response.getWriter().println("OK");
    }
}
此方法正确添加实体,但未同步连接的客户端数据。如何通知所有客户新的更改

更新: 我试图在提交时将DataEnabled的发布更改为PublishMode.ON

@DataEnabled(topic="dataTopic", publish=DataEnabled.PublishMode.ON_COMMIT, useInterceptor=true)
添加到application-context.xml

<graniteds:tide-data-publishing-advice/>

在这种情况下,air应用程序和servlet都会导致服务器错误:

严重:无法为ON_提交发布模式注册同步, 检查Spring PlatformTransactionManager是否支持它,以及 TransactionInterceptor的顺序低于 TideDataPublishingInterceptor


而且
没有帮助。

您可以使用useInterceptor=true在成功时尝试该模式
“useInterceptor=true”是必要的,因为它会让GraniteDS意识到您的服务完全在其控制之外调用

Hello William。如果我将
放在application-context.xml的末尾,则不会触发该服务器错误。但不幸的是,数据并没有更新。但我注意到,在本教程中,即使在GraniteDS控制范围内,客户机之间的数据也不会更新。看看我的另一个问题: