2

J'essaie d'exécuter l'exemple notification push, de la mise en route (https://developer.ibm.com/mobilefirstplatform/documentation/getting-started-6-3/notifications/push-notifications-hybrid-applications/), sur le MF Server à l'aide WAS et DB2. L'exemple à l'intérieur de MF Studio Eclipse fonctionne sur le serveur de développement MF.Comment exécuter l'exemple sur le MF test du serveur (serveur distant) « PushNotification »?

Problème: Obtenir un pushNotification sur le MobilDevice

  • Il fonctionne avec MF studio Eclipse sur la valeur par défaut du serveur de développement MF
  • IL NE FONCTIONNE PAS sur le serveur de test MF utilisant WAS et DB2

question: Comment exécuter l'exemple "PushNotification" sur le serveur de test MF?

environnement suivant est donné:

MF Server (WAS, DB2)

MobileFirstTestServer (ServerConfiguration) 
     |-> PushNotifications (Environment) 
      |-> PushNotification (Application) (Deployed) 
      |-> PushAdapter (Adapter) (Deployed) 
      |-> Device Registered 

Utilisation du navigateur pour soumettre une notification fonctionne:

Demande:

http://192.168.126.133:9082/PushNotifications/invoke?adapter=PushAdapter&procedure=submitNotification&parameters=[%22Thomas%22,%22TEST%22] 

Réponse de l'adaptateur:

/*-secure- 
    {"isSuccessful":true,"result":"Notification :: TEST is sent to user :: Thomas"}*/ 

code Adaptateur:

WL.Logger.debug("submitNotification >> userId :: " + userId + ", text :: " + notificationText); 
WL.Server.notifyAllDevices(userSubscription, notification); 
return { result: "Notification :: " + notificationText + " is sent to user :: " + userId }; 

Il semble "WL.Server.notifyAllDevices" ne fonctionne pas, mais pourquoi?

Toute idée?

LogCat Appareil

04-22 11:12:18.280: D/WLNativeXHR(3146): callback {"headers":{"Content-Language":"en-US","Date":"Wed, 22 Apr 2015 16:22:18 GMT","Content-Length":"70","P3P":"policyref=\"/w3c/p3p.xml\", CP=\"CAO DSP COR CURa ADMa DEVa OUR IND PHY ONL UNI COM NAV INT DEM PRE\"","Expires":"Thu, 01 Jan 1970 00:00:00 GMT","Content-Type":"application/json; charset=UTF-8","X-Powered-By":"Servlet/3.0","Pragma":"no-cache","Cache-Control":"no-cache, no-store, must-revalidate"},"status":200,"responseText":"/*-secure-\n{\"isSuccessful\":true,\"warnings\":[],\"errors\":[],\"info\":[]}*/\n","statusText":"OK"} 
    04-22 11:12:18.280: W/PluginManager(3146): THREAD WARNING: exec() call to LoggerPlugin.log blocked the main thread for 46ms. Plugin should use CordovaInterface.getThreadPool(). 
    04-22 11:12:18.296: D/NONE(3146): Application is now online. 
    04-22 11:12:18.324: D/NONE(3146): response [/apps/services/api/PushNotifications/android/notifications] success: /*-secure- 
    04-22 11:12:18.324: D/NONE(3146): {"isSuccessful":true,"warnings":[],"errors":[],"info":[]}*/ 
    04-22 11:12:18.344: D/CordovaLog(3146): file:///android_asset/www/default/worklight/worklight.js: Line 5755 : No matching configurations found from the server. Defaulting to local configuration 
    04-22 11:12:18.344: I/Web Console(3146): No matching configurations found from the server. Defaulting to local configuration at file:///android_asset/www/default/worklight/worklight.js:5755 
    04-22 11:12:18.448: D/dalvikvm(3146): GC_CONCURRENT freed 244K, 14% free 9237K/10631K, paused 37ms+8ms, total 63ms 
    04-22 11:12:22.440: D/NONE(3146): Piggybacking event transmission 
    04-22 11:12:22.440: D/NONE(3146): Flush called 

WAS TRACE LOG .. .. pression de travail après avoir modifié les paramètres du pare-feu et le niveau de journal WAS pour le serveur de test MF (serveur distant)

[4/24/15 10:19:53:754 CEST] 00000160 E UOW= source=com.worklight.gadgets.serving.GadgetAPIServlet class=com.worklight.gadgets.serving.GadgetAPIServlet method=createAjaxRequestExceptionJSON org= prod= component= thread=[WebContainer : 4] requestID=[AAAGStFDCFY-AAAAAAAAALb] appName=[IBM_Worklight_project_runtime_PushNotificationsMobileFirstTestServer] 
     FWLSE0020E: Ajax request exception: Notification token unknown, subscribe to PushAdapter.PushEventSource failed. [project PushNotifications] 
    [4/24/15 10:19:53:767 CEST] 00000160 E UOW= source=com.worklight.gadgets.serving.GadgetAPIServlet method=createAjaxRequestExceptionJSON org=null prod=null component=null thread=[WebContainer : 4] requestID=[AAAGStFDCFY-AAAAAAAAALb] appName=[IBM_Worklight_project_runtime_PushNotificationsMobileFirstTestServer] 
     FWLSE0117E: Error code: 1, error description: INTERNAL_ERROR, error message: FWLSE0069E: An internal error occurred during gadget request [project PushNotifications]Notification token unknown, subscribe to PushAdapter.PushEventSource failed., User Identity {wl_anonymousUserRealm=null, wl_deviceNoProvisioningRealm=(name:0ef47860-0edb-3d98-b495-df2c2efd3cbc, loginModule:WLDeviceNoProvisioningLoginModule), wl_directUpdateRealm=(name:null, loginModule:WLDirectUpdateNullLoginModule), wl_deviceAutoProvisioningRealm=null, wl_antiXSRFRealm=(name:92h5o8g0b3n396s0ovnbjhhr1k, loginModule:WLAntiXSRFLoginModule), wl_authenticityRealm=null, wl_remoteDisableRealm=(name:null, loginModule:WLRemoteDisableNullLoginModule), SampleAppRealm=null, PushAppRealm=(name:Thomas, loginModule:PushAppLoginModule), SubscribeServlet=null, myserver=(name:Thomas, loginModule:PushAppLoginModule)}. [project PushNotifications] 
    [4/24/15 10:20:34:639 CEST] 00000160 E UOW= source=com.worklight.integration.js.JavaScriptIntegrationLibraryImplementation class=com.worklight.integration.js.JavaScriptIntegrationLibraryImplementation method=sendMessage org= prod= component= thread=[WebContainer : 4] requestID=[AAAGStFDCFY-AAAAAAAAALr] appName=[IBM_Worklight_project_runtime_PushNotificationsMobileFirstTestServer] 
     FWLSE0227E: Failed to send notification. Reason: FPWSE0009E: Internal server error. No devices found [project PushNotifications] 
[4/24/15 10:21:43:126 CEST] 00000161 E UOW= source=com.ibm.isclite.runtime.aggregation.tags.PageTitleTag class=com.ibm.isclite.runtime.aggregation.tags.PageTitleTag method= doStartTag() org= prod= component= thread=[WebContainer : 5] requestID=[AAAGStFDCFY-AAAAAAAAAMI] appName=[isclite] 
     CWLAA5015W: Exception while rendering a page: com.ibm.isclite.datastore.TitleServiceException: Error retrieving title for "[email protected] (string: null, uniqueName: null)" 
[4/24/15 10:21:43:130 CEST] 00000161 W UOW= source=com.ibm.isclite.runtime.aggregation.tags.WindowTitleTag class=com.ibm.isclite.runtime.aggregation.tags.WindowTitleTag method=doStartTag() org= prod= component= thread=[WebContainer : 5] requestID=[AAAGStFDCFY-AAAAAAAAAMI] appName=[isclite] 
     CWLAA5015W: Exception while rendering a page: com.ibm.isclite.datastore.TitleServiceException: Error retrieving title for "[email protected] (string: null, uniqueName: null)" 
[4/24/15 10:22:16:666 CEST] 00000161 I UOW= source=com.ibm.ws.webcontainer.servlet.ServletWrapper class=com.ibm.ws.webcontainer.servlet.ServletWrapper method=init org= prod= component= thread=[WebContainer : 5] requestID=[AAAGStFDCFY-AAAAAAAAAMZ] appName=[IBM_Worklight_project_runtime_PushNotificationsMobileFirstTestServer] 
     SRVE0242I: [IBM_Worklight_project_runtime_PushNotificationsMobileFirstTestServer] [/PushNotifications] [ClientLogUploaderServlet]: Initialization successful. 
    [4/24/15 10:22:17:297 CEST] 00000161 W UOW= source=com.ibm.pushworks.server.notification.gcm.GCMMediator class=com.ibm.pushworks.server.notification.gcm.GCMMediator method=addTokenToAndroidKey org= prod= component= thread=[WebContainer : 5] requestID=[AAAGStFDCFY-AAAAAAAAAMb] appName=[IBM_Worklight_project_runtime_PushNotificationsMobileFirstTestServer] 
     FPWSE1079W: GCM push token APA91bHtOJXjXtQvq_goqKOFvqM5ZRT8zwJEmD6U5Jyqi7hxh-EYDyv9lx0JS4LfhyPNdekJs2oYAnYpmmlqx19k9fwoE69CvZaox61u-WO6xuNE_dskvLw2lqspHoqYr9ZMwH6-gY00APw7IPXMIowDTBafzHyFVQ is not added to GCM notification key. GCM Service invocation failed (reason: notification_key already exists) 
     com.ibm.pushworks.server.exceptions.GCMException: GCM Service invocation failed (reason: notification_key already exists) 
at com.ibm.pushworks.server.notification.gcm.GCMSender.sendToGCM(GCMSender.java:409) 
at com.ibm.pushworks.server.notification.gcm.GCMSender.addTokenToAndroidKey(GCMSender.java:353) 
at com.ibm.pushworks.server.notification.gcm.GCMMediator.addTokenToAndroidKey(GCMMediator.java:206) 
at com.ibm.pushworks.server.core.PushServiceImpl.getNotificationKey(PushServiceImpl.java:1215) 
at com.ibm.pushworks.server.core.PushServiceImpl.registerDevice(PushServiceImpl.java:429) 
at com.worklight.integration.services.impl.DataAccessServiceImpl.updateDeviceToken(DataAccessServiceImpl.java:403) 
at com.worklight.gadgets.serving.handler.NotificationSubscriptionHandler.doPost(NotificationSubscriptionHandler.java:126) 
at com.worklight.gadgets.serving.GadgetAPIServlet.doGetOrPost(GadgetAPIServlet.java:148) 
at com.worklight.gadgets.serving.GadgetAPIServlet.doPost(GadgetAPIServlet.java:108) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:595) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:668) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1227) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:776) 
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:458) 
at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178) 
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:136) 
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:97) 
at com.worklight.core.auth.impl.AuthenticationFilter$1.execute(AuthenticationFilter.java:215) 
at com.worklight.core.auth.impl.AuthenticationServiceBean.accessResource(AuthenticationServiceBean.java:76) 
at com.worklight.core.auth.impl.AuthenticationFilter.doFilter(AuthenticationFilter.java:220) 
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195) 
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91) 
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:928) 
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1025) 
at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:87) 
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:909) 
at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1662) 
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:200) 
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:459) 
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:526) 
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:312) 
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:88) 
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175) 
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) 
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) 
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138) 
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204) 
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775) 
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905) 
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1862) 

    [4/24/15 10:24:35:150 CEST] 00000161 I UOW= source=com.ibm.ws.webcontainer.servlet.ServletWrapper class=com.ibm.ws.webcontainer.servlet.ServletWrapper method=init org= prod= component= thread=[WebContainer : 5] requestID=[AAAGStFDCFY-AAAAAAAAANT] appName=[isclite] 
     SRVE0242I: [isclite] [/ibm/console] [/com.ibm.ws.console.probdetermination/customSelectDropLayout.jsp]: Initialization successful. 
[4/24/15 10:24:40:938 CEST] 00000161 I UOW= source=com.ibm.ws.webcontainer.servlet.ServletWrapper class=com.ibm.ws.webcontainer.servlet.ServletWrapper method=init org= prod= component= thread=[WebContainer : 5] requestID=[AAAGStFDCFY-AAAAAAAAANV] appName=[isclite] 
     SRVE0242I: [isclite] [/ibm/console] [/com.ibm.ws.console.probdetermination/logfileViewLayout.jsp]: Initialization successful. 
+0

Où est l'erreur dans votre question? Ne recevez-vous pas la notification dans l'appareil? Mentionnez le problème, ajoutez les journaux du client, les journaux du serveur ... –

+0

L'erreur est: Sur le périphérique mobile, je ne reçois pas la notification. –

+0

Vérifiez sur le réseau de votre serveur de test que toutes les adresses et ports requis sont ouverts pour les connexions entrantes et sortantes: https://developer.ibm.com/mobilefirstplatform/documentation/getting-started-6-3/notifications/push-notifications-hybrid -applications/# projectSetupAndGuidelines –

Répondre

1

Le journal LogCat est incomplet. Il ne montre pas que l'appareil a pu recevoir un jeton de notification, abonnez-vous pour les notifications push sur le serveur MFP, etc ...

  1. Fournir une plus complète LogCat log
  2. Vérifiez dans le réseau de votre serveur de test que tous les les adresses et les ports requis sont ouverts pour les connexions sortantes et entrantes répertoriées pour Android, ici: https://developer.ibm.com/mobilefirstplatform/documentation/getting-started-6-3/notifications/push-notifications-hybrid-applications/#projectSetupAndGuidelines
+0

Après avoir modifié certains paramètres de pare-feu et le niveau de journalisation du WAS pour le serveur de test MF (serveur distant), cela fonctionne. -> Juste pour la documentation: J'ai inséré le succès WAS-log dans ma question. Merci d'avoir fait attention à ma question. –

+0

Bonjour Idan, J'ai créé un exemple de vidéo pour le déploiement de «l'échantillon de notification push» sur le serveur distant de test. https://youtu.be/ea5hdKgF4AQ Peut-être que cela sera utile à l'avenir dans certaines situations. Cordialement, Thomas –