Skip to content

Latest commit

 

History

History
47 lines (33 loc) · 2.52 KB

File metadata and controls

47 lines (33 loc) · 2.52 KB

Using the Socket API with Some Common Third-Party Libraries

Java 7 runtime support on App Engine standard was deprecated on December 13, 2017 and will be shut down entirely on January 16, 2019. It is replaced by the Java 8 Runtime Environment.

Samples for the Java 8 runtime can be found here.

Using the Socket API with JavaPNS

Note: JavaPNS is an open source library for Apple Push Notifications. With socket support for App Engine, many applications can now use JavaPNS on App Engine directly.

App Engine does not officially support JavaPNS, although it may work with these caveats:

  • JavaPNS uses Security.getProperty, which was not permitted in versions of App Engine earlier than 1.7.3. However, if you need this to work in 1.7.2, you may change the javapns source to not use Security.getProperty, and simply set ALGORITHM to ``sunx509. (Future versions are expected to fix this by replacing the use of Security.getProperty` with `KeyManagerFactory.getDefaultAlgorithm()`, which will work correctly with older versions of App Engine.

  • App Engine does not support signed JAR files; accordingly the "Bouncy Castle" jar provided with the javapns distribution fails to load. To fix this, remove the META-INF/MANIFEST.MF file from bcprov-jdk15-146.jar using the following command line:

    zip -d bcprov-jdk15-146.jar META-INF/MANIFEST.MF

Using JavaMail with the Socket API

App Engine does not officially support JavaMail, although it may work with these caveats:

JavaMail 1.4.5 is compatible with App Engine but requires a work-around to resolve the issue of class loader ordering. Currently, there are JavaMail classes in the appengine-api.jar, which is scanned before all other JAR files. This causes the wrong javax.mail classes to be loaded. The work-around is to unzip the JavaMail 1.4.5 mailapi.jar file (excluding the META-INF/MANIFEST.MF file) into the WEB-INF/classes directory. This causes the correct classes to be loaded before those in appengine-api.jar.