Request for AGSIMPEPUSH JIRA
by Matthias Wessendorf
Hi,
I think it does make sense to track all the items for SimplePush (server
and client) in a separated JIRA. That way we could have a more
straightforward process of individual release, tracking at the right source
etc.
The integration between UP and SP would be still tracked at AGPUSH, but
that's really just one or two java classes :-)
Motivation:
I think that UP and SP are pretty different. Regarding SP, I think it does
make sense to capture that in a different instance:
* SimplePush works standalone or in combination with WildFly/vert.x
--> different targets, different dependencies, different "envirnoments"
* SimplePush is based on a spec (Moz-specific spec).
--> The server (and the client) should reflect that with different
cycles/releases, to be more fine grain.
* Independency
--> A release of a new version of SimplePush (based on a Netty bug, for
instance), should not be treated in a "Push release", while the UnifiedPush
server has no code changes at all. (vice versa)
For the name: AGSIMPLEPUSH
The AGPUSH will stay to "catch" all the UnifiedPush items.
--
Matthias Wessendorf
blog: http://matthiaswessendorf.wordpress.com/
sessions: http://www.slideshare.net/mwessendorf
twitter: http://twitter.com/mwessendorf
11 years, 4 months
AeroGear project demo planning
by Jay Balunas
Hi All,
As discussed in the team meeting I wanted to restart discussions around the demos for the project. I know it is long but it is also very important that we agree on our example strategy because it is one of the primary ways that people will learn about AeroGear - especially just starting out. We also need to balance this with the fact that maintenance of multiple examples can be time consuming (src, docs, tests, etc...).
Let me state what I think would be a good model for us at a high level, and then when we come to a consensus about this we can dig into the individual example ideas, specifically around the "showcase" demo (likely in another thread).
All of this is my opinion, not law ;-)
_Showcase Demo_
One larger scale demo that we can cover all (or nearly all) of the planned functionality up to 2.0. There has been several ideas tossed around from stock broker, prodoctor, etc... I don't want to focus on the specific app at this point. Functionality would be additive as we completed it, so the idea would need to be easily "upgraded" as we go.
The app should include all client types as examples (iOS, Android, Hybrid, Web), have a central backend, be deployable to OpenShift, and run on Wildfly/EAP. It would require documentation to discuss complexities and usage for an advanced application, but would not need to cover the bread and butter imo (that is what the quickstart tutorials are for). We would have to commit to long term maintenance of this as well.
There are pros and cons for this type of application. The maintenance and development burden is high. Also we need to be careful not to devote so much time to the application that it takes on a life of its own. I.e. we are not really trying to make a fully competitive stock broker app.
We also want to consider if/how this application would be deployed to an appstore. Depending on the application it may be very appropriate for it to be there, but we'll need to discuss.
Does this sounds acceptable as the scope and starting point for a showcase demo?
_Topic Demos_
I'm not sure about this category of demo yet, but wanted to bring it up. There are use-cases, and functionality that by their definition are beyond the scope of quickstart, and yet we would likely not want to have the showcase demo be the only location we demo the functionality.
The best example of this I can think of is Unified Push. I think we all agree, just the basic setup and requirements around push make it more than a quickstart. With the various servers, configuration, certs, etc... At the same time, we need a demo (both sooner, and simpler) than the showcase demo for the related tutorials, docs, etc...
So this category would be for this type of "topic" - I could see the possibility of some security functionality falling into this too, but I'm not 100% on that.
It would have the same type of requirements as the other demos - docs, tests, maintenance, etc...
Pros would be a more focused demo for specific functionality, cons are another non-trivial demo to maintain.
My personal opinion here would be take it on a case by case basis.
_Quickstarts_
This category sounds like it might be the simplest, but as a whole I think it represents a fairly large amount of work. Imo a quickstart is a focused demo, that highlights 1-2 specific use-cases. JDF has a lot of good definitions and requirements for quick starts that we should consider as well, where they don't conflict. For example build tools, deployment options, etc...
The trick here comes with how to manage and handle all of our different "parts". Do we group by client type, by functionality, etc... So for example, take a security related quickstart. It should show how to integration security across the various client types. Is that 1 quickstart for security, or 3 by client type.
Related to this is the cookbook idea that the Android team is using. Imo I think it is VERY important that all of our client types share a similar approach (cookbook or not). We don't want completely different approaches by client type. If we do group quickstarts (some or all) by client how will we handle common server-side functionality such as that security example above.
All of these items get complicated quickly, but I think we need to nail this down asap because we should start thinking about our quickstart libraries soon imo.
_One off examples_
Another type of example was mentioned in the ML, and that is of one-off examples for presentations, blogs, etc... Imo these are useful, and likely needed some of the time.
I think we should re-use our other examples when possible, but I also know that will not alway work for various reasons. These examples carry no maintenance expectations, and should not be in the AeroGear repositories either imo.
I also think it is possible for one-off examples to "become" quickstarts, but would have to meet the standards for a quickstart as we describe them.
_Repositories_
This is a related topic that I think will likely become its own thread or document, and that is about repository usage for the example types above. In general we need a better policy imo around this topic in general.
* Showcase example: I believe it should have a single repository with /server, /client, and /docs directories as needed. I believe having separate repositories is confusing and leads to clutter. The intent of the showcase app is to demo how everything integrates in one place, and should be easily accessed.
* Topic examples: I believe these should have a similar requirement as the showcase example. The point of the topic example is to cover a specific topic, not specific individual clients.
* Quickstart examples: This again gets complicated, and may depend on the way we choose to group them. However we group them, I think we should have a limited number of *-quickstart repositories, we should not have a repo for each quickstart. We'll need to discuss this as we discuss quickstart planning in general.
* One off examples: should not be in AeroGear's repository at all. Imo, if we aren't committing to maintain it we should not have it our repository.
_Forge and JBDS_
We also need to discuss how any of these examples relate to forge and JBDS efforts. At the very least, imo, some of our quickstarts should be based on scaffolding, and tooling. Imo many of the example (where possible) should be compatible with forge, and JBDS.
Not all examples would need to be compatible. Obviously that does not apply to iOS, and we would need to balance the effort required on a case-by-case basis for others. It just might not make sense or have a different target than forge or JBDS. That is fine, I don't want to use this as a handicap, but we should be considering both of these as we go.
----------
Again, I don't want this thread to break down into specific use-case discussions, I want us to discuss the example strategies for the project, then we can kick off separate thread for break down specific examples, and plans for them.
-Jay
11 years, 4 months
aerogear site restyle
by Corinne Krych
Hello All,
We've been talking about redesigning our aerogear.org web site. Hylke has done a great design job. Now, we 'just' want to make it responsive.
Out of several proposals:
1. use bootstrap (current version of our site) and apply our custom design
2. use topcoat css and apply our custom design
3. use HTML5 boilerplate and apply our custom design and make it responsive
I initially started with option 1, which might be overkill for a static site.
Tried option 2, but here too, it seems overkill so ended with option 3.
Using a blank page, I worked on Home page reapplying Hylke css but:
- removing maximun-scale=1.0 because we want to let people zoom if they wish,
- replacing 'px' unit to use 'em',
- centred logo images,
- making sure width is right otherwise you get screw up with iPhone rotate
- adding media queries (only 2 breakpoints for now, but need to be adjusted with devices tests and your feedbacks)
The main points to sort out for UX design is the menu bar and the footer.
To me, footer is too huge, even on desktop, could we remove news?
For the menu, it looks fine on tablets format but on phone, it's not really accessible. So I implemented topcoat swipe menu using CSS3 transform. Is it UX friendly? wdyt?
Feedback welcome,
Work in progress in https://github.com/corinnekrych/aerogear.org/tree/AEROGEAR-1285
++
Corinne
11 years, 4 months
aerogear-unified-push-java-client 0.2.0 released
by Sebastien Blanc
Hi Folks,
I'm happy to announce the release of aerogear-unified-push-java-client
0.2.0.
With this release, thanks to the fluent API it will be even easier to send
messages to the Push Server.
This is the staging repo :
https://repository.jboss.org/nexus/content/repositories/jboss_releases_st...
Here is the changelog :
* added missing descrs and minor formatting
* adding javadoc to the getters
* refactor to have category, deviceType and variants on the correct level
* javadoc in-sync with the guide
* moved to attributes map instead of fields
* added test case
* missing getter for variants
* be specific on ids
* added missing variants param.
* remove unused param.
* missing throw
* small typo
* renamed the tag name to unified-push-java-client
* rename artifact to unified-push-java-client
* Merge remote-tracking branch 'qmx/release_cleanups'
* fix formatting
* update developer section
* add scm section
* fix javadoc warnings and polish
* add a some javadoc to the buildUrl method
* add a non args constructor + extrac checks for serverURL
* README update, selective send section should use sendTo
* Merge branch 'parent_pom'
* add aerogear's parent pom
* fix pom formatting
* fixing conflicts
* fixed unit test
* moved Strings to fields, extra test cases, null check
* simple-push auto version fix
* more javadoc polishing
* updated javadoc
* more JavaDoc
* added some Javadoc
* add category, deviceType and rename identifiers to aliases
* change the version and update the readme
* Fixing merge conflicts
* first version of UnifiedMessage Builder
* fixed unit test
* moved Strings to fields, extra test cases, null check
* simple-push auto version fix
* more javadoc polishing
* updated javadoc
* more JavaDoc
* added some Javadoc
* Merge branch 'AGPUSH-135' of
https://github.com/aerogear/aerogear-unified-push-java-client into
AGPUSH-135
* add category, deviceType and rename identifiers to aliases
* first version of UnifiedMessage Builder
* Merge branch 'master' of
https://github.com/aerogear/aerogear-unified-push-java-client
* Polishing the JAva Sender Client
* Merge branch 'readme_update'
* Update Readme example code
* Adding a finally block and a disconnect(), to release resources
* change the version and update the readme
* first version of UnifiedMessage Builder
* Keep it simple
* moving to httpurlconnection
* Merge branch 'license_fixes'
* fix license headers
* Merge branch 'formatting'
* fix formatting
Please enjoy, test and report bugs !
Seb
11 years, 4 months
[SimplePush] Subsystem
by Daniel Bevenius
Hi,
I'm about to update the Netty subsystem to make some changes after the
feedback we got from the WildFly team [1].
I'm indenting to first address the concerns about the extra xml element,
use a module attribute to point where the factory class is located, and
then the threading tips.
They also recommended that we create a specific subsystem for SimplePush.
The advantage of this as I see it is that we would then have a schema for
the configuration options for SimplePush (and also the SockJS configuration
options). Without this we need to add a generic properties element to the
Netty subsystem.
Another advantage would also be just having one single module instead of
two like we currently have (one for the Netty subsystem and one for
SimplePush).
One disadvantage might be if we later would like the Unified Push Server to
be base on Netty it would also have to have a specific subsystem.
I wanted to people think is the right approach here for us?
[1] https://community.jboss.org/thread/229635;cid=1374049762089-667
11 years, 4 months
AG-1286 resolution, what to do with secondsun/pusheedemo
by Summers Pittman
In the meeting this morning and in the JIRA we discussed moving the
PusheeDemo code into the cookbook application.
Arguments for:
Push code is now in the main repo.
Push demo joins other demo code
Arguments against:
Push demo is no longer stand alone
Will need to document the push demo code is in the cookbook
Thoughts?
11 years, 5 months
[pushee] Issues with production certificate on iOS
by Yavuz Selim YILMAZ
Hi all,
I was trying out unified push server with my production app. Here are some of the issues I encountered. Any helps and directions are appreciated.
1- I cloned aerogear-unified-push-server master branch, and imported to eclipse. it was not compiling (I think because of m2e issues). I have seen in pom.xml file a fix for that already, but on my machine that fix was not working either. so, I needed to change maven-compiler-plugin's execution id to "test-compile". it then compiled, and deployed successfully.
2- Then I followed the instructions here: https://github.com/aerogear/aerogear-unified-push-server
Here, login command hangs with a message saying "no chunk, no close, no size. Assume close to signal end". And I hit Ctrl + C. Then tried again, same thing. And then I proceeded (with Ctrl + C), and everything else seem fine, and I could add my app and variants.
3- While adding the iOS variants, readme says {PUSH_ID}, but it is not clear if it means "pushApplicationId" or "id" (in the output of app creation command, there are two id's, none is called "PUSH_ID").
4- In the server side, "pushee" and "ag-push" are used together I believe. Example commands use "ag-push", while the repo deploys the server as "pushee" (but then it tries to navigate to "ag-push" on the browser, and cannot find). I simply renamed the project to "ag-push" after importing (so it deploys as "ag-push"), and it is working well, but I still see some logs printing "pushee".
5- Development certificate and sending push to development app is working well (as it was always the case :) ). But I'm still getting error on production app. Here is the server logs (I didn't know the payload, kept same with the last one I tried (i.e. there is a staging input in the payload). It sends to dev, but fails to send to prod.):
(first I thought the certificate_error is related to my .p12 file, and I reproduced the .p12 and added new variant and then tried again, but still no luck).
15:13:28,812 INFO [org.jboss.aerogear.connectivity.rest.sender.PushNotificationSenderEndpoint] (http--0.0.0.0-8080-2) Message submitted to PushNetworks for further processing
15:13:28,814 INFO [org.jboss.aerogear.connectivity.service.sender.impl.SenderServiceImpl] (EJB default - 9) Processing broadcast request with 'BroadcastMessage [simplePush=null, alert=try prod cert, sound=null, badge=1, data={staging=production}]' payload
15:13:29,814 INFO [com.notnoop.apns.internal.ApnsConnectionImpl] (Thread-102) Exception while waiting for error code: java.net.SocketException: Socket closed
at java.net.SocketInputStream.socketRead0(Native Method) [classes.jar:1.6.0_51]
at java.net.SocketInputStream.read(SocketInputStream.java:129) [classes.jar:1.6.0_51]
at com.sun.net.ssl.internal.ssl.InputRecord.readFully(InputRecord.java:422) [jsse.jar:1.6]
at com.sun.net.ssl.internal.ssl.InputRecord.read(InputRecord.java:460) [jsse.jar:1.6]
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:863) [jsse.jar:1.6]
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:820) [jsse.jar:1.6]
at com.sun.net.ssl.internal.ssl.AppInputStream.read(AppInputStream.java:75) [jsse.jar:1.6]
at java.io.InputStream.read(InputStream.java:82) [classes.jar:1.6.0_51]
at com.notnoop.apns.internal.ApnsConnectionImpl$1MonitoringThread.run(ApnsConnectionImpl.java:114) [apns-0.2.3.jar:]
15:13:31,743 INFO [com.notnoop.apns.internal.ApnsConnectionImpl] (Thread-105) Exception while waiting for error code: java.net.SocketException: Socket is closed
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.checkEOF(SSLSocketImpl.java:1334) [jsse.jar:1.6]
at com.sun.net.ssl.internal.ssl.AppInputStream.read(AppInputStream.java:76) [jsse.jar:1.6]
at java.io.InputStream.read(InputStream.java:82) [classes.jar:1.6.0_51]
at com.notnoop.apns.internal.ApnsConnectionImpl$1MonitoringThread.run(ApnsConnectionImpl.java:114) [apns-0.2.3.jar:]
15:13:32,150 INFO [com.notnoop.apns.internal.ApnsConnectionImpl] (Thread-106) Exception while waiting for error code: java.net.SocketException: Socket is closed
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.checkEOF(SSLSocketImpl.java:1334) [jsse.jar:1.6]
at com.sun.net.ssl.internal.ssl.AppInputStream.read(AppInputStream.java:76) [jsse.jar:1.6]
at java.io.InputStream.read(InputStream.java:82) [classes.jar:1.6.0_51]
at com.notnoop.apns.internal.ApnsConnectionImpl$1MonitoringThread.run(ApnsConnectionImpl.java:114) [apns-0.2.3.jar:]
15:13:32,150 INFO [com.notnoop.apns.internal.ApnsConnectionImpl] (EJB default - 9) Failed to send message Message(Id=1; Token=004DF5E9CBDB6160F3115D777A29EF64193D5BB34ACF82B8DBF42B8CF212BC9E; Payload={"staging":"production","aps":{"alert":"try prod cert","badge":1}})... trying again after delay: javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174) [jsse.jar:1.6]
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:136) [jsse.jar:1.6]
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1822) [jsse.jar:1.6]
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1004) [jsse.jar:1.6]
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1188) [jsse.jar:1.6]
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:654) [jsse.jar:1.6]
at com.sun.net.ssl.internal.ssl.AppOutputStream.write(AppOutputStream.java:100) [jsse.jar:1.6]
at java.io.OutputStream.write(OutputStream.java:58) [classes.jar:1.6.0_51]
at com.notnoop.apns.internal.ApnsConnectionImpl.sendMessage(ApnsConnectionImpl.java:240) [apns-0.2.3.jar:]
at com.notnoop.apns.internal.ApnsConnectionImpl.sendMessage(ApnsConnectionImpl.java:230) [apns-0.2.3.jar:]
at com.notnoop.apns.internal.ApnsServiceImpl.push(ApnsServiceImpl.java:46) [apns-0.2.3.jar:]
at com.notnoop.apns.internal.AbstractApnsService.push(AbstractApnsService.java:89) [apns-0.2.3.jar:]
at com.notnoop.apns.internal.ApnsServiceImpl.push(ApnsServiceImpl.java:36) [apns-0.2.3.jar:]
at org.jboss.aerogear.connectivity.message.sender.APNsPushNotificationSender.sendPushMessage(APNsPushNotificationSender.java:79) [classes:]
at org.jboss.aerogear.connectivity.service.sender.impl.SenderServiceImpl.sendToAPNs(SenderServiceImpl.java:188) [classes:]
at org.jboss.aerogear.connectivity.service.sender.impl.SenderServiceImpl.broadcast(SenderServiceImpl.java:160) [classes:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [classes.jar:1.6.0_51]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [classes.jar:1.6.0_51]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [classes.jar:1.6.0_51]
at java.lang.reflect.Method.invoke(Method.java:597) [classes.jar:1.6.0_51]
at org.jboss.as.ee.component.ManagedReferenceMethodInterceptorFactory$ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptorFactory.java:72) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.invocation.InterceptorContext$Invocation.proceed(InterceptorContext.java:374) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.doMethodInterception(Jsr299BindingsInterceptor.java:127) [jboss-as-weld-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.processInvocation(Jsr299BindingsInterceptor.java:135) [jboss-as-weld-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:36) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:36) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.jpa.interceptor.SBInvocationInterceptor.processInvocation(SBInvocationInterceptor.java:47) [jboss-as-jpa-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.weld.ejb.EjbRequestScopeActivationInterceptor.processInvocation(EjbRequestScopeActivationInterceptor.java:101) [jboss-as-weld-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.invocation.InitialInterceptor.processInvocation(InitialInterceptor.java:21) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:53) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ejb3.component.pool.PooledInstanceInterceptor.processInvocation(PooledInstanceInterceptor.java:51) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:228) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:304) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:190) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(LoggingInterceptor.java:59) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:43) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ee.component.TCCLInterceptor.processInvocation(TCCLInterceptor.java:45) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ee.component.ViewService$View.invoke(ViewService.java:165) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.as.ee.component.ViewDescription$1.processInvocation(ViewDescription.java:173) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ejb3.component.interceptors.AsyncVoidInterceptorFactory$Task.run(AsyncVoidInterceptorFactory.java:75) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) [classes.jar:1.6.0_51]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) [classes.jar:1.6.0_51]
at java.lang.Thread.run(Thread.java:680) [classes.jar:1.6.0_51]
at org.jboss.threads.JBossThread.run(JBossThread.java:122)
15:13:33,463 INFO [com.notnoop.apns.internal.ApnsConnectionImpl] (Thread-107) Exception while waiting for error code: java.net.SocketException: Socket is closed
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.checkEOF(SSLSocketImpl.java:1334) [jsse.jar:1.6]
at com.sun.net.ssl.internal.ssl.AppInputStream.read(AppInputStream.java:76) [jsse.jar:1.6]
at java.io.InputStream.read(InputStream.java:82) [classes.jar:1.6.0_51]
at com.notnoop.apns.internal.ApnsConnectionImpl$1MonitoringThread.run(ApnsConnectionImpl.java:114) [apns-0.2.3.jar:]
15:13:33,463 ERROR [com.notnoop.apns.internal.ApnsConnectionImpl] (EJB default - 9) Couldn't send message after 3 retries.Message(Id=1; Token=004DF5E9CBDB6160F3115D777A29EF64193D5BB34ACF82B8DBF42B8CF212BC9E; Payload={"staging":"production","aps":{"alert":"try prod cert","badge":1}}): javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174) [jsse.jar:1.6]
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:136) [jsse.jar:1.6]
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1822) [jsse.jar:1.6]
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1004) [jsse.jar:1.6]
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1188) [jsse.jar:1.6]
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:654) [jsse.jar:1.6]
at com.sun.net.ssl.internal.ssl.AppOutputStream.write(AppOutputStream.java:100) [jsse.jar:1.6]
at java.io.OutputStream.write(OutputStream.java:58) [classes.jar:1.6.0_51]
at com.notnoop.apns.internal.ApnsConnectionImpl.sendMessage(ApnsConnectionImpl.java:240) [apns-0.2.3.jar:]
at com.notnoop.apns.internal.ApnsConnectionImpl.sendMessage(ApnsConnectionImpl.java:230) [apns-0.2.3.jar:]
at com.notnoop.apns.internal.ApnsServiceImpl.push(ApnsServiceImpl.java:46) [apns-0.2.3.jar:]
at com.notnoop.apns.internal.AbstractApnsService.push(AbstractApnsService.java:89) [apns-0.2.3.jar:]
at com.notnoop.apns.internal.ApnsServiceImpl.push(ApnsServiceImpl.java:36) [apns-0.2.3.jar:]
at org.jboss.aerogear.connectivity.message.sender.APNsPushNotificationSender.sendPushMessage(APNsPushNotificationSender.java:79) [classes:]
at org.jboss.aerogear.connectivity.service.sender.impl.SenderServiceImpl.sendToAPNs(SenderServiceImpl.java:188) [classes:]
at org.jboss.aerogear.connectivity.service.sender.impl.SenderServiceImpl.broadcast(SenderServiceImpl.java:160) [classes:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [classes.jar:1.6.0_51]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [classes.jar:1.6.0_51]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [classes.jar:1.6.0_51]
at java.lang.reflect.Method.invoke(Method.java:597) [classes.jar:1.6.0_51]
at org.jboss.as.ee.component.ManagedReferenceMethodInterceptorFactory$ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptorFactory.java:72) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.invocation.InterceptorContext$Invocation.proceed(InterceptorContext.java:374) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.doMethodInterception(Jsr299BindingsInterceptor.java:127) [jboss-as-weld-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.processInvocation(Jsr299BindingsInterceptor.java:135) [jboss-as-weld-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:36) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:36) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.jpa.interceptor.SBInvocationInterceptor.processInvocation(SBInvocationInterceptor.java:47) [jboss-as-jpa-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.weld.ejb.EjbRequestScopeActivationInterceptor.processInvocation(EjbRequestScopeActivationInterceptor.java:101) [jboss-as-weld-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.invocation.InitialInterceptor.processInvocation(InitialInterceptor.java:21) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:53) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ejb3.component.pool.PooledInstanceInterceptor.processInvocation(PooledInstanceInterceptor.java:51) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:228) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:304) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:190) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(LoggingInterceptor.java:59) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:43) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ee.component.TCCLInterceptor.processInvocation(TCCLInterceptor.java:45) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ee.component.ViewService$View.invoke(ViewService.java:165) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.as.ee.component.ViewDescription$1.processInvocation(ViewDescription.java:173) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ejb3.component.interceptors.AsyncVoidInterceptorFactory$Task.run(AsyncVoidInterceptorFactory.java:75) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) [classes.jar:1.6.0_51]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) [classes.jar:1.6.0_51]
at java.lang.Thread.run(Thread.java:680) [classes.jar:1.6.0_51]
at org.jboss.threads.JBossThread.run(JBossThread.java:122)
15:13:33,483 ERROR [org.jboss.weld.Bean] (EJB default - 9) WELD-000019 Error destroying an instance Managed Bean [class org.jboss.aerogear.connectivity.jpa.dao.impl.VariantDaoImpl] with qualifiers [@Any @Default] of org.jboss.aerogear.connectivity.jpa.dao.impl.VariantDaoImpl@fb0bb09
15:13:33,484 ERROR [org.jboss.ejb3.invocation] (EJB default - 9) JBAS014134: EJB Invocation failed on component SenderServiceImpl for method public abstract void org.jboss.aerogear.connectivity.service.sender.SenderService.broadcast(org.jboss.aerogear.connectivity.model.PushApplication,org.jboss.aerogear.connectivity.service.sender.message.BroadcastMessage): javax.ejb.EJBException: com.notnoop.exceptions.NetworkIOException: javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown
at org.jboss.as.ejb3.tx.CMTTxInterceptor.handleExceptionInOurTx(CMTTxInterceptor.java:166) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:230) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:304) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:190) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(LoggingInterceptor.java:59) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:43) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ee.component.TCCLInterceptor.processInvocation(TCCLInterceptor.java:45) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ee.component.ViewService$View.invoke(ViewService.java:165) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.as.ee.component.ViewDescription$1.processInvocation(ViewDescription.java:173) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ejb3.component.interceptors.AsyncVoidInterceptorFactory$Task.run(AsyncVoidInterceptorFactory.java:75) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) [classes.jar:1.6.0_51]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) [classes.jar:1.6.0_51]
at java.lang.Thread.run(Thread.java:680) [classes.jar:1.6.0_51]
at org.jboss.threads.JBossThread.run(JBossThread.java:122)
Caused by: com.notnoop.exceptions.NetworkIOException: javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown
at com.notnoop.apns.internal.Utilities.wrapAndThrowAsRuntimeException(Utilities.java:277) [apns-0.2.3.jar:]
at com.notnoop.apns.internal.ApnsConnectionImpl.sendMessage(ApnsConnectionImpl.java:257) [apns-0.2.3.jar:]
at com.notnoop.apns.internal.ApnsConnectionImpl.sendMessage(ApnsConnectionImpl.java:230) [apns-0.2.3.jar:]
at com.notnoop.apns.internal.ApnsServiceImpl.push(ApnsServiceImpl.java:46) [apns-0.2.3.jar:]
at com.notnoop.apns.internal.AbstractApnsService.push(AbstractApnsService.java:89) [apns-0.2.3.jar:]
at com.notnoop.apns.internal.ApnsServiceImpl.push(ApnsServiceImpl.java:36) [apns-0.2.3.jar:]
at org.jboss.aerogear.connectivity.message.sender.APNsPushNotificationSender.sendPushMessage(APNsPushNotificationSender.java:79) [classes:]
at org.jboss.aerogear.connectivity.service.sender.impl.SenderServiceImpl.sendToAPNs(SenderServiceImpl.java:188) [classes:]
at org.jboss.aerogear.connectivity.service.sender.impl.SenderServiceImpl.broadcast(SenderServiceImpl.java:160) [classes:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [classes.jar:1.6.0_51]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [classes.jar:1.6.0_51]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [classes.jar:1.6.0_51]
at java.lang.reflect.Method.invoke(Method.java:597) [classes.jar:1.6.0_51]
at org.jboss.as.ee.component.ManagedReferenceMethodInterceptorFactory$ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptorFactory.java:72) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.invocation.InterceptorContext$Invocation.proceed(InterceptorContext.java:374) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.doMethodInterception(Jsr299BindingsInterceptor.java:127) [jboss-as-weld-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.processInvocation(Jsr299BindingsInterceptor.java:135) [jboss-as-weld-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:36) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:36) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.jpa.interceptor.SBInvocationInterceptor.processInvocation(SBInvocationInterceptor.java:47) [jboss-as-jpa-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.weld.ejb.EjbRequestScopeActivationInterceptor.processInvocation(EjbRequestScopeActivationInterceptor.java:101) [jboss-as-weld-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.invocation.InitialInterceptor.processInvocation(InitialInterceptor.java:21) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:53) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ejb3.component.pool.PooledInstanceInterceptor.processInvocation(PooledInstanceInterceptor.java:51) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:228) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
... 22 more
Caused by: javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174) [jsse.jar:1.6]
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:136) [jsse.jar:1.6]
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1822) [jsse.jar:1.6]
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1004) [jsse.jar:1.6]
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1188) [jsse.jar:1.6]
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:654) [jsse.jar:1.6]
at com.sun.net.ssl.internal.ssl.AppOutputStream.write(AppOutputStream.java:100) [jsse.jar:1.6]
at java.io.OutputStream.write(OutputStream.java:58) [classes.jar:1.6.0_51]
at com.notnoop.apns.internal.ApnsConnectionImpl.sendMessage(ApnsConnectionImpl.java:240) [apns-0.2.3.jar:]
... 55 more
15:13:33,500 ERROR [org.jboss.as.ejb3] (EJB default - 9) JBAS014102: Asynchronous invocation failed: javax.ejb.EJBException: com.notnoop.exceptions.NetworkIOException: javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown
at org.jboss.as.ejb3.tx.CMTTxInterceptor.handleExceptionInOurTx(CMTTxInterceptor.java:166) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:230) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:304) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:190) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(LoggingInterceptor.java:59) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:43) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ee.component.TCCLInterceptor.processInvocation(TCCLInterceptor.java:45) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ee.component.ViewService$View.invoke(ViewService.java:165) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.as.ee.component.ViewDescription$1.processInvocation(ViewDescription.java:173) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ejb3.component.interceptors.AsyncVoidInterceptorFactory$Task.run(AsyncVoidInterceptorFactory.java:75) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) [classes.jar:1.6.0_51]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) [classes.jar:1.6.0_51]
at java.lang.Thread.run(Thread.java:680) [classes.jar:1.6.0_51]
at org.jboss.threads.JBossThread.run(JBossThread.java:122)
Caused by: com.notnoop.exceptions.NetworkIOException: javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown
at com.notnoop.apns.internal.Utilities.wrapAndThrowAsRuntimeException(Utilities.java:277) [apns-0.2.3.jar:]
at com.notnoop.apns.internal.ApnsConnectionImpl.sendMessage(ApnsConnectionImpl.java:257) [apns-0.2.3.jar:]
at com.notnoop.apns.internal.ApnsConnectionImpl.sendMessage(ApnsConnectionImpl.java:230) [apns-0.2.3.jar:]
at com.notnoop.apns.internal.ApnsServiceImpl.push(ApnsServiceImpl.java:46) [apns-0.2.3.jar:]
at com.notnoop.apns.internal.AbstractApnsService.push(AbstractApnsService.java:89) [apns-0.2.3.jar:]
at com.notnoop.apns.internal.ApnsServiceImpl.push(ApnsServiceImpl.java:36) [apns-0.2.3.jar:]
at org.jboss.aerogear.connectivity.message.sender.APNsPushNotificationSender.sendPushMessage(APNsPushNotificationSender.java:79) [classes:]
at org.jboss.aerogear.connectivity.service.sender.impl.SenderServiceImpl.sendToAPNs(SenderServiceImpl.java:188) [classes:]
at org.jboss.aerogear.connectivity.service.sender.impl.SenderServiceImpl.broadcast(SenderServiceImpl.java:160) [classes:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [classes.jar:1.6.0_51]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [classes.jar:1.6.0_51]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [classes.jar:1.6.0_51]
at java.lang.reflect.Method.invoke(Method.java:597) [classes.jar:1.6.0_51]
at org.jboss.as.ee.component.ManagedReferenceMethodInterceptorFactory$ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptorFactory.java:72) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.invocation.InterceptorContext$Invocation.proceed(InterceptorContext.java:374) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.doMethodInterception(Jsr299BindingsInterceptor.java:127) [jboss-as-weld-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.processInvocation(Jsr299BindingsInterceptor.java:135) [jboss-as-weld-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:36) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:36) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.jpa.interceptor.SBInvocationInterceptor.processInvocation(SBInvocationInterceptor.java:47) [jboss-as-jpa-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.weld.ejb.EjbRequestScopeActivationInterceptor.processInvocation(EjbRequestScopeActivationInterceptor.java:101) [jboss-as-weld-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.invocation.InitialInterceptor.processInvocation(InitialInterceptor.java:21) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:53) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ejb3.component.pool.PooledInstanceInterceptor.processInvocation(PooledInstanceInterceptor.java:51) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:228) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
... 22 more
Caused by: javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174) [jsse.jar:1.6]
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:136) [jsse.jar:1.6]
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1822) [jsse.jar:1.6]
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1004) [jsse.jar:1.6]
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1188) [jsse.jar:1.6]
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:654) [jsse.jar:1.6]
at com.sun.net.ssl.internal.ssl.AppOutputStream.write(AppOutputStream.java:100) [jsse.jar:1.6]
at java.io.OutputStream.write(OutputStream.java:58) [classes.jar:1.6.0_51]
at com.notnoop.apns.internal.ApnsConnectionImpl.sendMessage(ApnsConnectionImpl.java:240) [apns-0.2.3.jar:]
... 55 more
Kind regards,
---
Yavuz Selim Yilmaz
SUNY at Buffalo
Computer Science and Engineering
PhD Candidate
11 years, 5 months
PHP Push SDK
by Tommy McCarthy
Hey everyone!
As some of you know from various emails, I pushed my first code for the PHP Sender SDK [AGPUSH 183] to my GitHub [2]. I have a bit of work to do on it, especially in regards to errors and error handling. In its current state, it successfully handles submitting a selected or broadcast send to device(s), including handling the server authentication. It also allows all fields in the payload to be filled and multiple values for selected send (i.e. which variants are targeted, or categories) are supported and properly formatted as a json object for submission.
I know some of you have taken a look at it, and I appreciate any more input, comments, or suggestions!
Tommy McCarthy
[AGPUSH 183] https://issues.jboss.org/browse/AGPUSH-183
[2] https://github.com/tmccarthy9/aerogear-unified-push-php-client
11 years, 5 months
Threads on AeroGear
by Yavuz Selim YILMAZ
Hi all,
When I was using AeroGear iOS, I needed to read from pipe and execute the success and failure blocks in background (for background data syncronization, a basic one which provides eventual data consistency). What I did first was this:
dispatch a thread
read from pipe
--- READ ---
success
--- SUCCESS BLOCK ---
failure
--- FAILURE BLOCK ---
However, when I checked, I realized that the success and failure blocks were being executed on the main thread, not on the thread that I initiated the read. Then I needed to modify the code and do like this (I know all "--- READ ---"s are already in background):
read from pipe
--- READ ---
success
dispatch a thread
--- SUCCESS BLOCK ---
failure
dispatch a thread
--- FAILURE BLOCK ---
At that time, I was going to ask the reason behind dispatching back to the main queue for success and failure blocks, but then I thought the idea is coming from Android's AsyncTask. So my wrong assumption made sense as I thought having similar way of handling the end-developer (hope you get what I mean by end-developer) operations (in this case read from pipe) would help to use same/similar software architectures for different platforms (iOS and Android in this case).
Then I started to taste AeroGear Android from the last week. Keeping my hard times with multithreading on iOS in mind, I was expecting to see the read from pipe code something like this:
create AsyncTask
doInBackground
--- READ ---
onPostExecute
success
--- SUCCESS BLOCK ---
failure
--- FAILURE BLOCK ---
However, what I've seen on RestAdapter was quite different:
create new thread
--- READ ---
success
--- SUCCESS BLOCK ---
failure
--- FAILURE BLOCK ---
And here, success and failure blocks are being executed on the background thread instead of on the UI thread. I checked why not using AsyncTask for this operation (as I was using it for my network operations if I need to touch the UI thread at onProgress and at onPostExecute), and I realized that there is a reason behind using ThreadPoolExecutor (no deep research though, I only know it is recommended considering the operations might take longer). So, in Android case, making sure the availability of the UI thread when executing success and failure blocks is left to the end-developer as far as I could see (please correct me if I am wrong), while in iOS case the execution of the success or failure blocks indicates that the main thread is up and running at that time. The difference is maybe because of the way iOS and Android handles the execution of the background threads. But, when first tasting the libs for both platforms, I did not feel comfortable with (it was not so obvious) on which thread the success and failure blocks are executed.
So, my first question is, can somebody point me where these threading designs were discussed? I am curious about the idea behind these designs (platform pushes that way? easy to implement? common way of doing network operations? or any other specific reason?), and hoping to learn new things from there (actually I am sure I will).
Second and the last thing, I think somewhere in the guides and docs, the threading (best practices when using AeroGear) should be emphasized/mentioned/explained. Because, although things are smooth and easy when the operations take little amount of time, things are becoming more complicated when the operations take longer as the device users' app usage pattern is unknown. (e.g. for Android, I needed to check thread name/id to actually realize the success/failure blocks were being executed on the background thread (e.g. Pipes 101 mentions to be aware of Android Activity Lifecycle, but not so clear what happens during the execution - is it going to stop? is it going to execute on UI thread or background? will I need to check if UI thread is there or not? etc.). And for iOS, I needed to have a really blocking success/failure code to realize it was running on the main thread, since then I was looking for some other parts to see why scrolling was not smooth).
Kind regards,
---
Yavuz Selim Yilmaz
SUNY at Buffalo
Computer Science and Engineering
PhD Candidate
11 years, 5 months