Кварцевая работа для вызова сервлета другого приложения
Мне нужно создать кварцевую работу в моем приложении Grails, которое должно вызывать сервлет другого приложения. И в методе doGet() сервлета мне нужно получить сообщение, которое передается, и выполнить процесс, а после его завершения необходимо отправить ответ обратно в службу. Я новичок в этом, кто-нибудь может мне помочь. создаст задание в приложении grails и вызовет метод сервиса из этого метода, как мне вызвать сервлет 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();
}
}
}
Вызывает ли приведенный выше код сервлет doGet()
метод?
1 ответ
Я использую плагин для остальных клиентов, 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, это, конечно, нужно изменить, если нет.