이것은 RESTful 수신기 서비스 구현에 대한 질문이지만, 먼저 배경을 제공하기 위해 몇 가지 배경을 제공 할 것입니다.Java 응용 프로그램에서 RESTful 서비스 시작 및 중지
디렉토리와 데이터베이스 파일을 입력으로 사용하는 기존의 Java 응용 프로그램 & 스윙 UI가 있습니다. 이 버튼을 설정하면 해당 디렉토리 내의 PDF 양식을 데이터베이스로 가져옵니다. 버튼과 일부 로깅 출력을 위해 UI에 작은 JFrame 창이 있습니다. 이것은 아주 잘 작동합니다.
이제이 Java 응용 프로그램을 Exchange 메일 서버에 연결하고 PDF가 첨부 된 새 전자 메일을 수신하고 디렉터리에 저장 한 다음 위의 응용 프로그램을 사용하여 가져 오기를 원합니다.
는 (IMAP, POP 등이 활성화되지 않음) 나는 https://github.com/OfficeDev/ews-java-api그러나이 요구하는 EWS-자바 API를 사용하려고 한 우리의 Exchange 서버에 연결하려면이 교환 메일에서 푸시 알림을받을하고자하는 클라이언트
1) Exchange 서버에 연결 (나는이 작업을 수행 할 수 있습니다)
ExchangeService newService = new ExchangeService(ExchangeVersion.Exchange2010_SP2);
newService.setUrl("https://myurl/ews/Exchange.asmx");
ExchangeCredentials credentials = new WebCredentials("user","password");
newService.setCredentials(credentials);
2) 구독 : (REST를 통해) 서버는 세 가지를 않습니다 알림 및 설치를 콜백 URI를 밀어 이것에
유사 새로운 이메일 알림 (도움이 여기에 필요)를 얻을 수
@Override
public PushSubscription subscribeToPushNotifications(){
URI callback = null;
PushSubscription pushSubscription = null;
try{
logger.info("Subscribing to push notifications.. Endpoint Listener URI = " + config.getNotificationListenerURI());
callback = new URI(config.getNotificationListenerURI());
pushSubscription = service.subscribeToPushNotifications(
getFoldersForSubscription(), callback , 5, null,
EventType.NewMail, EventType.Created, EventType.Deleted, EventType.Modified, EventType.Moved);
logger.info("Done! --> PushSubscription ID= " + pushSubscription.getId());
}catch(URISyntaxException e){
logger.error("EWS ==> Invalid Notification Listener URL = " + config.getNotificationListenerURI() +". Please, verify <integration-modules>");
Throwables.propagate(e);
}catch (Exception e){
logger.error("EWS ==> Error subscribing to push notifications", e);
Throwables.propagate(e);
}
return pushSubscription;
}
3) 설정 리스너 서비스를 (나는이 작업을 수행 할 수 있습니다) : Exchange Web Services Java APi + RESTful Push Notifications Listener를
@Path("/emailnotification")
public class ExchangeNotificationListener {
private static final Log logger = LogFactory.getLog(ExchangeNotificationListener.class);
@Path("/incomingevent")
@POST()
@Produces(MediaType.TEXT_XML)
public Response onNotificationReceived() throws Exception {
logger.info("Received EWS notification !!!");
return Response.ok().build();
}
@GET
@Path("/{param}")
public Response getMsg(@PathParam("param") String msg) {
String output = "Jersey say : " + msg;
return Response.status(200).entity(output).build();
}
}
내 청취자와 JAX-RS 3 단계와 바람둥이 내에서 실행하고 바람둥이로 시작되는이 웹 서비스에 대한 바람둥이 같은 컨테이너 내에서 실행하는 데 필요한 것으로 보인다.
기존 응용 프로그램을 시작/중지하는 방법이 있습니까? 아니면 전체를 웹 서비스 프로젝트로 변환해야합니까? 지금까지 3 단계를 독립형 웹 프로젝트로 관리했지만 기존 앱에서 3 단계를 시작할 수 있기를 원합니다.
2 단계에서 전자 메일 알림 신청 후 ExchangeNotificationListener를 시작하고 싶습니다.
구독을 시작하는 클래스가이를 위해 ExchangeNotificationListener 클래스를 확장 할 수 있습니까?
아니면 바람둥이 이외의 것을 사용해야합니까?
감사