czwartek, sierpnia 20, 2009

Transaction timeout na WLS a QueryTimeout na JDBC

Przekroczenie czasu wykonywania się transakcji i jej rollback nie gwarantuje, że w tym samym momencie przerwane zostanie zapytanie JDBC. Weblogic może rzucić wyjątek TimedOutException, a Statement JDBC będzie się nadal wykonywać. Dlatego należy pamiętać o Statement.setQueryTimeout(). Uwaga: nie wszystkie bazy to obsługują.

DbDiff na replice read-only

Założenie: z produkcyjnej bazy danych online generowana jest codziennie replika read-only. Chcemy w jakiś sposób generować różnice pomiędzy stanem z dnia obecnego a stanem z dnia poprzedniego. Tabelki zawierają od kilkuset tysięcy do paru milionów rekordów. Projekt nie jest priorytetowy i nie chcemy na niego wydawać pieniędzy.

Rozwiązanie: Tworzymy bazę przejściową z tabelkami CURRENT_* i PREVIOUS_*. Na początku transakcyjnej operacji kopiujemy wszystkie CURRENT_* do PREVIOUS_*, potem ładujemy aktualny stan bazy read-only do CURRENT_* i liczymy różnicę (select minus select). Baza przejściowa ma do dyspozycji 1500MB pamięci, program do generowania różnicy 768MB.

Warunki brzegowe: Tabelki źródłowe po zserializowaniu do plików mają > 300MB. Dell + Intel Core 2 Quad 2.4 GHz + 3GB RAM + NT5.

Wyniki:
Czas operacji na bazie:
Apache Derby: 31 minut (bez select into table)
Oracle XE: 12 minut (20 minut bez create table as select)
MSSQL 2005 Express: 16 minut (24 min bez select into from).
PostgreSQL: nie da się (transakcje nie działają tak jak trzeba)
MySQL: nie da się (brak operatora minus/except)

Kto tworzy Linuksa

Sporo ludzi. Na pierwszym miejscu osoby prywatne (21.1% zmian w kodzie), na drugim RedHat (12.0%), potem IBM (6.3%), Novell (6.1%), Intel (6.0%), Oracle (3.1%), Parallels - producent narzędzi do wirtualizacji (1.7%), Fujitsu (1.5%), SGI (1.2%), Sun i HP (1.0%), Freescale, Marvel i MontaVista (0.9%), AMD, Nokia, Google, Atheros (0.8%). A firmy Canonical w zasadzie nie widać. Ubuntu ssie...

środa, sierpnia 19, 2009

Metro Sun-a nie działa z Sharepointem MS

Na końcu metody getElementPropertyAccessor w klasie JAXBContextImpl z pakietu com.sun.xml.bind.v2.runtime nie należy rzucać wyjątku tylko zwrócić dodatkowy Accessor, który bierze pod uwagę, że klasy MS mogą mieć nazwy zaczynające się od Get i Set...
public GetSetAccessor(Class wrapperBean, String localName)
throws JAXBException
{
try {
String javaFieldName = Character.toLowerCase(
localName.charAt(0)) + localName.substring(1);
wrapperBean.getDeclaredField(javaFieldName);
}
catch (Exception e) {
throw new JAXBException("No access to field "+
localName + " of " + wrapperBean+": "+e.toString());
}
String fieldInMethod = Character.toUpperCase(
localName.charAt(0)) + localName.substring(1);

String setterName = "set"+fieldInMethod;
String getterName = "get"+fieldInMethod;

for (Method m : wrapperBean.getMethods()) {
if (m.getName().equals(setterName) &&
m.getParameterTypes().length==1) {
setter = m;
}
else if (m.getName().equals(getterName) &&
m.getParameterTypes().length==0) {
getter = m;
}
}
}
No i gdzie to interoperability out of box?...

piątek, sierpnia 14, 2009

Plugin do Jiry wywołujący WebService Sharepoint-a

Jira używana jest do prowadzenia zgłoszeń, a Sharepoint do przechowywania dokumentów. Plugin typu "post-function" tworzy stronę Sharepointa dla danego zgłoszenia. Klient WebService'u został wygenerowany Metrem (z założenia Metro umie rozmawiać z WS Microsoftu wymagającymi autoryzacji, z ISA Serverem pomiędzy). Pliki źródłowe klienta się nie kompilują i mają błąd tworzenia URL-a dla WSDL-a umieszczonego w pliku jar:
baseUrl = Clazz.class.getResource(".");
url = new URL(baseURL, "clazz.wsdl");
należy zamienić na:
url = Clazz.class.getResource("clazz.wsdl");



Dla CreateSite konieczne jest wykonanie: stsadm -o addpath http://site -type wildcardinclusion.
Dla CreateWorkspace możemy użyć własnego template'u.

środa, sierpnia 12, 2009

Jak wyjąć zaszyfrowane hasła z konfiguracji WebLogic'a

new weblogic.security.internal.encryption.ClearOrEncryptedService(
SerializedSystemIni.getEncryptionService(
"/home/weblogic/bea/domains/wls0"
)
).decrypt("{3DES}1234abcd==");

wtorek, sierpnia 11, 2009

Zużycie procesora przez maszyny wirtualne w trybie idle


Windows 2008 Sever 64-bit, średnio 23%


RHEL 5.3 64-bit, średnio 4%


OpenSUSE 11.1 64-bit, średnio 0.5%.

Na wszystkich trzech maszynach są nieużywane środowiska WebMethods.

A całościowy load dla ośmiordzeniowej maszyny wygląda tak:
5:34pm up 63 days 1:49, 1 user, load average: 2.73, 5.68, 6.39

niedziela, sierpnia 09, 2009

KDE 4.3 w Fedorze 11

Do /etc/yum.repos.d wrzucamy kde.repo z włączonym repozytorium testing. Następnie wystarczy zrobić yum update.



Efekty GUI chodzą przyzwoicie na GF9100M (trzeba w /etc/modules.d/blacklist.conf dodać nouveau, używam sterownika nvidia). Przeglądanie folderów w plazmoidzie jest sensownie rozwiązane.