これはRESTfulなリスナーサービスの実装に関する質問ですが、まずコンテキストを提供するための背景をいくつか提供します。JavaアプリケーションからのRESTfulサービスの開始および停止
私は既存のJavaアプリケーション&スイングUIを使用して、ディレクトリとデータベースファイルを入力として受け取ります。これらの設定が完了すると、そのディレクトリ内のPDFフォームがデータベースにインポートされます。 UIのボタンとロギング出力のための小さなJFrameウィンドウがあります。これは非常にうまくいく。
このJavaアプリをExchangeメールサーバに接続し、PDFを添付した新しい電子メールを受信し、ディレクトリに保存し、上記のアプリケーションを使用してインポートします。
は(IMAP、POPなどが有効になっていません)私は https://github.com/OfficeDev/ews-java-apiは、しかし、これは必要とEWS-のJava APIを使用しようとしていた私たちのExchangeサーバーに接続すること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経由で)サーバは、3つのことを行いますExchange Web Services Java APi + RESTful Push Notifications Listener:通知およびセットアップにコールバック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)はセットアップリスナーサービスこれと同様に新しいメール通知(ヘルプはここで必要)
を取得するためにプッシュします
@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とTomcat内で実行し、Tomcatが起動され、これらのWebサービスのためのTomcatなどのコンテナ内で実行する必要があることが表示されます。
既存のアプリケーションでリスナーの起動/停止を行う方法はありますか、それともWebサービスプロジェクトにするために全部を変換する必要がありますか?これまでのところ、ステップ3はスタンドアロンのWebプロジェクトとしてしか行えませんでしたが、既存のアプリケーションからステップ3をやり直すことができるようにしたいと考えています。
理想的には、手順2の電子メール通知の購読後にExchangeNotificationListenerを開始したいと考えています。
サブスクリプションを開始するクラスは、これを行うためにExchangeNotificationListenerクラスを拡張できますか?
また、私はtomcat以外のものを使用する必要がありますか?
おかげ