2016-09-13 5 views
1

이것은 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 클래스를 확장 할 수 있습니까?

아니면 바람둥이 이외의 것을 사용해야합니까?

감사

답변