Archiv

Archiv für Februar, 2009

Playing with arrays

Presenting today: One of “took me two hours” issues. This codes seems to be ok:

1
2
3
Object[] strArr = new String[] { "whatever" };
Object[] newArr = ArrayUtils.addAll(strArr, null);
ArrayUtils.addAll(newArr, new Object[] { Boolean.TRUE });

But executing it leads to the following exception:

Exception in thread "main" java.lang.ArrayStoreException
	at java.lang.System.arraycopy(Native Method)
	at org.apache.commons.lang.ArrayUtils.addAll(ArrayUtils.java:2972)

This is because ArrayUtils.addAll takes as type for the returned array the componentType of the first array. Although strArr is defined as Object[], strArr.getClass().getComponentType() returns String, resulting in a String-array.

KategorienAllgemein Tags:

logback and -Dlogback.configurationFile

Today I was fighting against logback and its configuration option -Dlogback.configurationFile. Logback has simply ignored this option, no matter what I have tried. Simple solution: Upgrade from logback v0.9.9 to logback v0.9.15 and everything works as expected.

KategorienAllgemein Tags: ,

Tomcat Cookies Subdomain übergreifend

Cookies sollten Subdomain übergreifend (www.xai.com -> blog.xai.com) funktionieren. Hierzu hat Tomcat leider keinen Konfigurationsparamter, dafür gab es auch schon mehrere Lösungsansätze:

http://www.esus.be/blog/?p=3
http://thread.gmane.org/gmane.comp.jakarta.tomcat.user/165272

Beide (nacheinander) getestet, Valve Konfiguration in der server.xml an mehrere Stellen ausprobiert, nie hat es geklappt. Anscheinend wird bei tomcat 5.5.17 und 5.5.20 die Session immer vor dem Valve erzeugt und als Cookie geschrieben, ist aber weder über org.apache.catalina.connector.Response.getCookies noch über die MimeHeaders wie im zweiten Link erreichbar.

Zwischendurch noch probiert, Request über einen RequestWrapper im Valve zu verändern und in RequestWrapper#configureSessionCookie die entsprechende Änderung zu machen, auch das war nicht erfolgreich (die Session wird noch vor dem Aufruf des Valve erzeugt).

Somit blieb als einzige Lösung das Patchen von Tomcats org.apache.catalina.connector.Request, darin dann auch #configureSessionCookie. Dies auf der Basis von jeweils 5.5.17 (Entwicklersystem) und 5.5.20 (etch) durchgeführt, Änderungen im CVS (apache-tomcat-5.5) gesichert und online genommen (s. Issue #1778).

KategorienAllgemein Tags: , , ,