Java – CertificateException: No name matching xxx found

6 04 2011

At paysafecard we have a lot to deal with certificates. For our test systems we use one SSL certificate for different sub-domains, e.g. one certificate for „https://test.yunacard.com“ used for „https://testa.yunacard.com“ and „https://testb.yunacard.com“.

But when you do this, you get a javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No name matching xxx found when trying to connect e.g. with new java.net.URL(url).openStream();

The work around for this problem is, to include the following in your Java class (found here):

public class ClassBla {
  static {
    javax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier(new javax.net.ssl.HostnameVerifier() {
      public boolean verify(String hostname, javax.net.ssl.SSLSession sslSession) {
        return true;
      }
   });
  }
  ..
}

There is a way to import a certificate issued to a different domain for another certain (sub-)domain with the java keytool as well.





Java: Rounding error from Double to BigDecimal

31 01 2011

Today’s amusement in my job:

Rounding error from Double to BigDecimal, see java docs for public BigDecimal(double val).

Java creates a BigDecimal which is exactly equal to 0.1 (an unscaled value of 1, with a scale of 1), but it is actually equal to 0.1000000000000000055511151231257827021181583404541015625

 

Workaround 1: Convert Double to String before converting to BigDecimal, as suggested in the java docs for BigDecimal

BigDecimal b = new BigDecimal(Double.toString(double));

 

Workaround 2: Round!
Double d = ...; // your (rounded) value
BigDecimal b = new BigDecimal(d).setScale(2, BigDecimal.ROUND_HALF_UP);

.

Another problem with Double in Java: http://www.exploringbinary.com/java-hangs-when-converting-2-2250738585072012e-308/





Multiple writable mappings in Java Persistence API

26 11 2008

Seit kurzem setzte ich mich mit der Java Persistence API auseinander, das mit Hibernate und dem von uns eingesetzten Oracle Toplink implementiert wurde.

Folgende Fehlermeldung beschäftigte mich bei einer OneToMany-Relation

Multiple writable mappings exist for the field [tabltenname.spaltenname]. Only one may be defined as writable, all others must be specified read-only.

Die Lösung war das explizite deklarieren der Spalte als „read only“, was man mit den Optionen nullable=false, insertable=false und updatable=false bei der @Column-Annotation erreicht.

Spannend, nicht? ;)

java-coffee-cup-300x219





convert date to calendar in java

15 08 2008

heute wieder mal googlen müssen, weils mir wieder mal entfallen ist, deswegen gleich ein beitrag für die howto section.

in java sind die alten, sehr hilfreichen funktionen von java.util.Date, die teile des datums zurückgeben, wie date.getMonth(), leider depricated, und zwar schon seit v. 1.1. stattdessen wird heute java.util.Calendar verwendet. …und das geht so ;)

Date date = .. // das datum, das man aufsplitten will;
Calendar cal = Calendar.getInstance();
cal.setTime(date);
// monat fängt mit 0 an!
int month = cal.get(Calendar.MONTH) + 1;
int day = cal.get(Calendar.DAY_OF_MONTH);
int year = cal.get(Calendar.YEAR);

beim suchen hab ich eine hilfreiche seite gefunden mit vielen tutorials und beispielen gefunden.

.

wer ein formatiertes datum braucht, nimmt am besten:


Date date = new Date();
java.text.SimpleDateFormat df = new java.text.SimpleDateFormat( "yyyyMMdd" );





torque throws ORA-01424 – purge the recycle bin

10 06 2008

schon wieder passiert und wieder mal länger nach der lösung gesucht, bis es mir wieder (spät, aber doch) eingefallen ist:

wird eine ORA-01424 oracle fehlermeldung beim generieren der java-klassen aus der DB über die torque geworfen, hat man wohl wieder das magische wort purge beim löschen der tabellen vergessen.

drop table drop_me purge
/

der fehler tritt auf, da die tabellen nicht vollständig gelöscht wurden und somit im recycle bin der DB liegen. purge bereinigt den papierkorb, bzw wird beim drop einer tabelle diese gleich vollständig gelöscht.

der fehler ORA-01424 deutet eigentlich auf ein fehlendes zeichen nach dem escape character hin und führt in diesem zusammenhang leider nur in eine falsche richtung.








Follow

Get every new post delivered to your Inbox.