I am using IBM MobileFirst 6.3, with Apple, Android, Blackberry and Windows Environments.
I have enabled Push Notifications for Apple, Android and Windows environment. I mistakenly uploaded application with sandbox certificate on my production server. On noticing the mistake, I removed the version with Sandbox certificate and uploaded the production certificate version properly and restarted the Websphere Liberty server.
After the restart, push notification is NOT WORKING for any platform.
Earlier I got APNS SSL connection error in my logs, but now I can not see any Push related error in my logs, I enabled trace on com.ibm.pushworks.server.notification.apns.*=all, and still got nothing back.
The only error I get is of could not piggyback ... , which I believe even IBM is suggesting to suppress. I have attached the finest level trace here
I have checked through Wireshark, and server receives request on HTTP GET method and replies with status 200. But what happens after that is a mystery.
P.S. The push notification worked once while the SandBox certificate version was enabled, but didn't work after the restart at all.
#eshaa when you use to change in certificate related settings in client side code you need to take new build i means new .wlapp files to be upload to the server then it will be effect whatever changes you done.
Related
Developing WPF application and using Redmine issue tracker to send reports to.
If Redmine issue tracker is hosted on server where there is not installed valid SSL certificate, NBug crashes because it can not send reports to server...
What if user does not have internet?
I do not want for NBug to crash application because it can not do what it wants to do.
Is there a setting for NBug that if can not send error reports, just allow application gracefully to continue running?
Enable release mode as per documentation:
NBug.Settings.ReleaseMode = true;
This catches all internal exceptions and logs them instead of throwing them.
I have the following implementation in testing environment,
Front-end Server [IBM HTTP Server + IBM Websphere plugin],
WLServer1 [IBM Worklight 6.2 + IBM DB2 10.1+ Liberty Farm 8.5.5.1] and
WLServer2 [IBM Worklight 6.2 + IBM DB2 10.1+ Liberty Farm 8.5.5.1].
plugin-cfg.xml has been generated from each Worklight server and merged.
The request[http] from multiple devices has been directed to worklight server's alternatively, once the merged plugin-cfg.xml has been deployed in Front-end server's IBM Websphere plugin.
How I can implement the same to serve HTTPS request.
And also I have implemented the "UserCertificateAuthenticationProject" from the Worklight modules which connects the device[HTTPS] to Worklight server directly.
Note Tested it on Android only.
Help me to understand, How I can achieve HTTPS in Test environment via IHS.
What should be the procedure in Production environment?
Note IBM Worklight 6.2 supports Android, IOS, Blackberry & Windows, so I have to implement in all platforms.
It sounds like the problem you are having is similar to this one: https://stackoverflow.com/a/21914147/2245921 The Unresponsive Host error occurs for one of two reasons:
Your device cannot reach your server (they are not in the same network)
The device does not trust the server's certificate
Since you can connect to your HTTP connection, it is not #1, so it should be #2. The answer to the other question I pointed to above should fix your problem. Make sure to turn on trace-level logs in the WL Logger so that you can see the exceptions regarding untrusted certificates.
Edit: To expand on this answer; to use HTTPS, your server needs an SSL certificate to identify itself, otherwise the device has no proof that it is connecting to the right server and not to some random server that could be malicious. You should already have a certificate that you are using in your server; if you don't, then read on.
You usually get an SSL certificate from one of two places: you either use a certificate issued to you by a trusted Certificate Authority (e.g., Verisign), or you create one for internal testing purposes. In your case, you probably want to create your own, so you should follow the "Client X.509 Certificate Authentication and User Enrollment" getting started here, specifically the parts that talk about generating the server certificate.
Once you have that certificate set up, you should configure your server to use it; for that, follow the instructions here. After doing this, the last step is to have your device trust your server's certificate. For this, follow the last part in the getting started above, which shows you how to make your iOS/Android device trust the server. You would have to look up how to do this on Windows and Blackberry, too.
After this, you should now be able to connect successfully via HTTPS. (Always make sure that when you get an "Unresponsive host" error, that you can still connect to the HTTP console via the browser, to make sure that you are connected to the same network as your server. I know you already did this as you specified in your question, I'm just mentioning it as a reminder since it is easy to forget this.)
My app is unable to access the server after about 30 minutes in background on Android phone and iPhone.
I know it should be related to the serverSessionTimeout. However, I cannot connect to server any more after that occurred, and I tried to invoke "WL.Client.connect()", but it didn't work. I always got request timeout response.
I test my app on local (without DMZ) via Worklight Studio embedded server, and it worked fine. Only get this issue on UAT (DMZ) and PROD (DMZ).
Project architecture:
1. DMZ (IBM IMC/LMC)
2. LAN
3. Worklight 6.0
4. Production environment
5. No Load Balancer and cluster setup
My assumption:
1. it seems the DMZ kept the credential between DMZ and WL server and didn't refresh it when try to connect WL server again after WL session is timeout.
This issue is fixed now.
The root cause is because we sent out two requests to WL server going through IMC at the same time, only the second one shake hands with WL server successfully.
I'm trying to get TeamCity v7.1 to notify me about build events via Jabber. I have TeamCity on a server at work and I've setup an OpenFire XMPP server on my desktop machine. To complete the picture I have a Pidgin client running on my desktop listening for messages.
I've configured TeamCity to connect to the OpenFire server via an OpenFire user I called "teamcity" and when I "test connection" I am told that the connection is ok. When I'm testing the connection I'm sending to an OpenFire user I called "pidgin".
The problem is that Jabber messages sent from TeamCity never reach the "pidgin" user. TeamCity gives no indication of a problem and I see no sign of a problem in the TC notification log. Much the same way no notification from build events ever gets through to the "pidgin" user (fairly confident I've setup the Jabber notification rules correctly).
Any idea why this is or what I should try next?
I'm pretty sure I've resolved my problem by specifying the "full" XMPP username in TeamCity. In my example: pidgin#urisopenfire (where uriopenfire is the name of my OpenFire server instance).
When I used this full form when testing the connection and in the Jabber Notifier settings for my TC project, I did get notification from TeamCity coming into my Pidgin client.
Oddly enough, this full form is not needed when setting up the "teamcity" user in TeamCity's global Jabber Notification settings.
My client certificate seems to work locally, but not on my hosting server.
So I have a "p12" that I exported my certificate to (for push notification development). I can perform a push from both my OSX and Windows boxes (on local network). The moment I move the push and certificate out to my hosting server, I get a timeout. The Apple Push Notification Service doesn't respond at all. Why is this?
You should take a look at iLime for doing Push Notifications. I was able to avoid the hassle setting up my own server and the integration was quick - less than an hour from start to finish.