从REST服务方法调用实例方法

时间:2014-07-14 12:38:37

标签: java swing rest

我有一个接受POST请求的REST服务。有什么办法可以从我的运行swing GUI中触发一个方法吗?我希望能够在每次发出POST请求后刷新发布数据的GUI表。这样做有事件处理机制吗?

REST服务代码:

@POST
@Consumes({OslcMediaType.APPLICATION_RDF_XML, OslcMediaType.APPLICATION_XML, OslcMediaType.APPLICATION_JSON})
@Produces({OslcMediaType.APPLICATION_RDF_XML, OslcMediaType.APPLICATION_XML, OslcMediaType.APPLICATION_JSON})
public Response createServiceRegistration(
        @PathParam("serviceProviderId") final String serviceProviderId , 
        final ServiceRegistration aServiceRegistration
    ) throws IOException, ServletException
{
    try 
    {
        ServiceRegistration newServiceRegistration = OrchestratorAdaptorManager.createServiceRegistration(httpServletRequest, aServiceRegistration, serviceProviderId);
        httpServletResponse.setHeader("ETag", OrchestratorAdaptorManager.getETagFromServiceRegistration(newServiceRegistration));

        /////////////////////////////////////////////////////
        //       Accessing and writing registration data to database 
        //      
        try
        {
            System.out.println("establishing database connection");
            Registration registration = new Registration();
            registration.createConnection();
            registration.insertRegistration(aServiceRegistration.getService().toString(), aServiceRegistration.getTitle(), aServiceRegistration.getLabel());
            registration.shutdown();                    
        }
        catch(Exception exc)
        {
            exc.printStackTrace();
            throw new RuntimeException("Error inserting ServiceRegistration to the database", exc);                 
        }               
        //
        //        Disconnected from the base
        ///////////////////////////////////////////////////

        return Response.created(newServiceRegistration.getAbout()).entity(aServiceRegistration).build();
    } 
    catch (Exception e) 
    {
        e.printStackTrace();
        throw new WebApplicationException(e);
    }


    //Trigger changes in GUI here :/
}

我每隔10秒更新一次表的类:

class CheckServices extends TimerTask
{
    DefaultTableModel model;
    protected CheckServices(DefaultTableModel model)
    {
        this.model = model;
    }

    @Override
    public void run() 
    {           
            Registration reg = new Registration();
            try 
            {
                reg.createConnection();
                ServiceRegistration[] sr = reg.selectRegistrations();
                reg.shutdown();
                System.out.println("Adding Registration Resources");

                int rows = model.getRowCount();
                for(int i = 0; i < rows; i++)
                {
                    model.removeRow(0);
                }

                for(ServiceRegistration srItem : sr)
                {
                     System.out.println("--> " + srItem.getTitle());
                     Object[] row = { false , srItem.getService().toString(), srItem.getTitle(), srItem.getLabel()};            
                     model.addRow(row);
                }               
            } 
            catch (URISyntaxException e) 
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }   
    }       
}   

0 个答案:

没有答案