GitHub Webhook Signature mit Java validieren

GitHub bietet Webhooks an, die es einem ermöglichen, sich über Repository-Änderungen informieren zu lassen. Je nach Auswahl sendet GitHub dann einen JSON-Payload an die hinterlegte URL. Damit man sich auf der Serverseite sicher sein kann, dass die Daten auch wirklich von GitHub kommen und korrekt sind, sendet GitHub eine x-hub-signature mit. Die von GitHub versendete Signatur kann dann validiert werden. Wie das geht, zeigt folgendes Beispiel in Java.
GitHub Webhook Signature mit Java validieren weiterlesen

IndexOutOfBoundsException with Catalina SSI Servlet

I played around with some Server Side Includes using org.apache.catalina.ssi.SSIServlet and noticed that some statements (which were fine on Apache) are not working on GlassFish. Finally I found the solution.

In Apache (using mod_ssi) you can do this:

<!--#if expr="{$HTTP_USER_AGENT} == /(iPhone)/" -->
<p>It's an iPhone.</p>
<!--#endif -->

But on GlassFish Server (with SSIServlet) you have to do this:

<!--#if expr="{$HTTP_USER_AGENT} = '/(iPad)/'" -->
<p>It's an iPhone.</p>
<!--#endif -->

Notiz – JDBC Datasource in JEE-Applikation hinzufügen

Hier eine Kurzbeschreibung, um in der Entwicklungsumgebung NetBeans 6.9.1 eine JDBC-Datasource für eine Java Enterprise-Applikation hinzuzufügen. Inklusive Database Mapping, Persistent Entities und Session Beans, die über Annotationen in einem Servlet verwendet werden können:

  1. „mysql-connector-java-5.1.13-bin.jar“ in den lib-Ordner von GlassFish 3.0.1 kopieren
  2. GlassFish neustarten
  3. MySQL Connection-Pool in der GlassFish-Administrationsoberfläche anlegen
  4. JDBC Ressource (jdbc/name) in der GlassFish- Administrationsoberfläche anlegen
  5. Entity Classes from Database (mit List-Collection) in NetBeans-Projekt generieren
  6. New Persistence Unit in NetBeans-Projekt generieren
  7. New Session Bean (ohne Interface) in NetBeans-Projekt erzeugen
  8. New Servlet in NetBeans-Projekt erzeugen
  9. SessionBean mit @EJB-Annotation verwenden

Die JDBC Ressource muss diese Eigenschaften gesetzt haben:

portNumber
databaseName
serverName
password
user
URL
Url

Die URL wird folgendermaßen aufgebaut: jdbc:mysql://hostname:port/databaseName.