GWT exception in Hosted Mode

I work with GWT version 1.7.0. It's old but our product requires it. Recently I had to debug using Hosted mode under Windows XP. During Hosted mode startup I had an exception

2011-02-08 17:04:31,578 [FATAL] Uncaught Exception:
com.google.gwt.core.client.JavaScriptException:(TypeError):
Object doesn't support this property or method. number: -2146827850
 description: Obiekt nie obsługuje tej właściwości lub metody.
    at com.google.gwt.user.client.impl.DOMImplStandard.initEventSystem(Native Method)
    at com.google.gwt.user.client.impl.DOMImplMozilla.initEventSystem(DOMImplMozilla.java:39)
    at com.google.gwt.user.client.impl.DOMImpl.maybeInitializeEventSystem(DOMImpl.java:111)
    at com.google.gwt.user.client.impl.DOMImplStandard.sinkEvents(DOMImplStandard.java:140)
    at com.google.gwt.user.client.impl.DOMImplMozilla.sinkEvents(DOMImplMozilla.java:27)
    at com.google.gwt.user.client.DOM.sinkEvents(DOM.java:1221)

After some investigation I found the reason.
During development, for performance reasons I compile my GWT apps only for Firefox. So this was the case. You must know that in earlier versions of GWT (and so in 1.7.0), application is displayed in special window with embedded Internet Explorer. And now you might look closer to the stacktrace above and see that there are some Mozilla classes involved and that's wrong because for IE we should have only IE classes! So that's the cause I had exception.

So if you want to run Hosted mode you have to compile your GWT application at least with IE support. Add this to you *.gwt.xml config file

Or leave it without declaring user.agent so it would be compiled for all supported browsers. Too shame that GWT doesn't warn if it was not compiled for current browser.

If you still have problems with mentioned exception look at an issue in GWT bug tracker.

Oracle ODBC dla Windows

Potrzebowałem dostępu do bazy Oracle przez ODBC. Niestety Oracle'owy driver odbc jest inny niż wszystkie :-), bo nie pozwala zdefiniować dostępu do bazy wprost, tylko należy użyć spójnego mechanizmu narzędzi Oracle'owych, definiującego połączenie. Mowa o TNS (Transparent Network Substrate), co ja bym nazwał definicją połączenia (zamiast Przeźroczystego Substratu Sieciowego ;-)). TNS może pochodzić z kilku źródeł - lokalnego (specjalnego pliku) i globalnego - np. LDAP. Dzięki temu we wszystkich narzędziach bazodanowych Oracle, podajemy tylko nazwę połączenia zamiast każdorazowo określać wszystkie parametry połączenia. Rozwiązanie zmyślne, ale patrząc przez pryzmat problemów z konfiguracją - nieintuicyjne. 

Aby połączyć się przez Oracle ODBC, należy pobrać sterowniki. Ja znalazłem cały pakiet zwany ODAC (Oracle Data Access Component). Po zainstalowaniu należy zdefiniować TNS naszego połączenia. Do tego celu służy plik tnsnames.ora, który zawiera specjalną składnię. Poniżej podstawowa konfiguracja:


my_conn =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = moj.serwer.pl)(PORT = 1521))
   )
 (CONNECT_DATA =
   (SERVICE_NAME = sid_uslugi)
 )
)


Ponadto należy poinstruować narzędzia Oracle w jaki sposób ma wyszukiwać definicji połączeń. Mowa tu o kolejności przeszukiwania oraz z których źródeł skorzystać (ww. lokalne i/lub globalne). Ustawiamy to w pliku sqlnet.ora. Tu potrzebujemy tylko:

NAMES.DIRECTORY_PATH= (TNSNAMES)

Oba pliki należy umieścić w (już istniejącym) katalogu
%KATALOG_INSTALACJI_ODAC%\product\11.2.0\client_1\Network\Admin

Teraz można już korzystać z ODBC. Jeśli mieliście otwarty program korzystający z połączenia, to dla pewności należy go uruchomić ponownie.

Servicemix: could not start under Windows XP due to infinitive wait for lock

I got looped during ServiceMix start

2010-11-23 14:49:32 org.apache.felix.karaf.main.SimpleFileLock lock
INFO: locking
2010-11-23 14:49:33 org.apache.felix.karaf.main.SimpleFileLock lock
INFO: locking
2010-11-23 14:49:34 org.apache.felix.karaf.main.SimpleFileLock lock
INFO: locking
2010-11-23 14:49:35 org.apache.felix.karaf.main.SimpleFileLock lock

...

SerivceMix tries to lock certain files to mark it's instance run. If you have an error shown above search for SeriviceMix process in memory and kill it.

Servicemix: Could not parse settings maven_path/settings.xml under Windows XP

Today I encountered problem with servicemix Could not parse settings [file:/C:/Documents and Settings/Bartek/.m2/settings.xml] A quick look at karaf.log revealed the problem Caused by: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 2 of 4-byte UTF-8 sequence. So the problem is with BOM (byte order mark) in settings.xml file. Many Windows editors add it at start of an utf encoded files. You should save settings.xml as ordinary utf8 file without BOM. Problem solved.

Oracle SQL Developer dla MSSQL

Ostatnio poznałem ciekawe narzędzie do manipulacji schematami bazy danych. Oracle SQL Developer się nazywa i nie służy tylko do baz Oracle. Ponieważ pracuję obecnie przy projekcie opartym o MS SQL, to potrzebowałem możliwości połączenia z MS SQL. Aby to osiągnąć należy do $SQL_DEVELOPER_HOME/jdbc/lib wrzucić driver JDBC. Na pewno działa z jTDS, opensource'owym driverem. Próbowałem też z jarem microsoftowym i mi nie zadziałało. Po uruchomieniu SQL Developera należy wybrać Tools->preferences->database->third party JDBC drivers i wskazać wkopiowanego JARa. Co piękne - od razu pojawia się nowa zakładka przy okienku nowego połączenia z DB. Nie trzeba restartować. Na razie poznaję feature'y SQL Developera, ale już na pierwszy rzut oka widać, że oprócz manipulacji schemą i listowania danych ma bardzo dużo możliwości. Pytanie tylko czy wszystkie działają również z MS SQLem czy tylko z bazami Oracle.
Linki: http://www.oracle.com/technetwork/developer-tools/sql-developer/ http://sourceforge.net/projects/jtds/ http://www.microsoft.com/sqlserver/