quartz作业调用另一个应用程序的servlet

时间:2017-02-14 05:50:37

标签: servlets grails quartz

我需要在我的grails应用程序中创建一个quartz作业,它应该调用另一个应用程序的servlet。在servlet doGet()方法中,我需要接收传递的消息并执行该过程,一旦结束,需要将响应发送回服务。我是新手,任何人都可以帮助我。将在grails应用程序中创建一个作业,并从此方法调用一个服务方法如何调用另一个应用程序的servlet doGet()。

这是我的石英工作

class DBCleanUpJob {

    def concurrent = false
        def miscBillService

        static triggers = {
        cron name : 'myTrigger', cronExpression : "0 0 2 * 1 ?"
    }

        def execute() {
        miscBillService.miscBillCall()
    }
}

这是我的服务

 @Transactional
     class MiscBillService {


     def miscBillCall() {

         String line;
         try
         {
             URL url = new URL("http://127.0.0.1/MServlet?value=run start");
             BufferedReader ins = new BufferedReader(new InputStreamReader(url.openStream()));
             line = ins.readLine();

             System.out.println(line);

             ins.close();
         }
         catch (Exception e)
         {
             e.printStackTrace();
         }
     }
 }

上面的代码是否调用了servlet doGet()方法?

1 个答案:

答案 0 :(得分:0)

我使用其他客户端插件https://github.com/grails-plugins/grails-rest-client-builder/

将以下内容添加到build.gradle

dependencies {
    compile "org.grails:grails-datastore-rest-client:5.0.0.RC2"
    ...
}

然后在你的服务中......

import grails.plugins.rest.client.RestBuilder

def yourGetUrl = 'http://getUrl'
def rest = new RestBuilder()
def resp = rest.get( yourGetUrl )
// do some validation on response & process
def xml = processGetResponse( resp )
def yourPostUrl = 'http://postUrl'
resp = rest.post( yourPostUrl ) {
    contentType "text/xml; charset=ISO-8859-1"
    xml xmlData
}
processPostResponse( resp )

上面假设您正在回复xml,如果没有,这当然需要改变。