2

我嘗試使用WAS和DB2在MF服務器上運行從入門(https://developer.ibm.com/mobilefirstplatform/documentation/getting-started-6-3/notifications/push-notifications-hybrid-applications/)開始的示例推送通知。 MF Studio Eclipse中的示例適用於MF開發服務器。如何在MF測試服務器(遠程服務器)上運行「PushNotification」示例?

問題:獲得一個pushNotification在MobilDevice

  • IT上的默認與MF工作室Eclipse中的運行MF開發服務器
  • 它不使用MF測試服務器工作和DB2

問題:如何在MF Test Server上運行「PushNotification」示例?

以下環境中給出:

MF服務器(WAS,DB2)

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

使用瀏覽器提交通知的工作原理:

請求:

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

響應:

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

適配器代碼:

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

看來 「WL.Server.notifyAllDevices」 不工作,但爲什麼呢?

任何想法?

logcat的設備

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跟蹤日誌 ..工作推.. 改變防火牆設置,是對MF測試服務器(遠程服務器)的日誌級別

[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

問題在哪裏?你沒有收到設備中的通知?提到問題,添加客戶端日誌,服務器日誌... –

+0

錯誤是:在移動設備上,我沒有收到通知。 –

+0

在您的測試服務器的網絡中驗證所有必需的地址和端口是否對傳出和傳入連接都是開放的:https://developer.ibm.com/mobilefirstplatform/documentation/getting-started-6-3/notifications/push-notifications-hybrid -applications /#projectSetupAndGuidelines –

回答

1

LogCat日誌不完整。它不顯示該設備能夠收到通知令牌,認購MFP服務器上的推送通知,等等

  1. 提供一個更全面的logcat登錄
  2. 測試服務器的網絡中確認所有需要的地址和端口對於爲Android安裝的傳出和傳入連接打開:https://developer.ibm.com/mobilefirstplatform/documentation/getting-started-6-3/notifications/push-notifications-hybrid-applications/#projectSetupAndGuidelines
+0

在我更改了一些防火牆檢測和MF測試服務器(遠程服務器)的WAS日誌級別後,它就起作用了。 - >僅供參考:我將成功的WAS-log插入到我的問題中。 感謝您關注我的問題。 –

+0

Hello Idan, 我創建了一個示例視頻,用於將「推送通知示例」部署到測試遠程服務器。 https://youtu.be/ea5hdKgF4AQ 也許這對未來的某些情況很有用。 Regards,Thomas –

相關問題