czwartek, października 15, 2009

Oracle Fusion

Wszystko jest zmigrowane na WebLogic'a (jest sportowany Enterprise Manager, obok jest standardowy deployment WebLogic Console) - czyli to jednak było hostile takeover. Fusion Middleware ma wszystkie funkcjonalności potrzebne do zastąpienia produktów ESB.



Welcome Screen jest rewelacyjny.







SOA Suite jest trochę niedopracowany. Deployment można zrobić tylko na Admin Serverze z dołożonymi komponentami SOA. Powyżej przykład z operacją bazodanową udostępnioną jako WebService.


Żeby operacje bazodanowe działały musimy stworzyć w konsoli DataSource'a oraz dodać go do DbAdapter-a (najprościej wyedytować weblogic-ra.xml z pliku Oracle\Middleware\Oracle_SOA1\soa\connectors\DbAdapter.rar)

niedziela, września 27, 2009

Rozmiary okien TCP

www.wp.pl 4380
www.onet.pl 5792
www.google.pl 5672
www.gazeta.pl 32768
www.microsoft.com 8190

sobota, września 26, 2009

Jak uaktywnia się skalowanie okna TCP



W przypadku Axis-a można to rozwiązać tak:

System.setProperty("tcp.window.size", "64000");
AxisProperties.setProperty("axis.socketFactory", "CustomSocketFactory");

Czasy WebService'u dla rozmiaru okna:

1460 (RWIN=MSS :) => 21860 ms
5000, 7000, 17000, 33000, 64000 => 4500-6500 ms

TCP Window Scaling

Diagnostyka i konfiguracja. Po drodze może być stary Cisco IOS Firewall obcinający pakiety spoza okna (którego rozmiar jest w rzeczywistości przeskalowany przez 2^wscale)...

poniedziałek, września 14, 2009

Tweakowanie systemu Windows

... na podstawie oryginalnej dokumentacji od MS.

piątek, września 11, 2009

Prstat

27109 adinstan  469M  323M cpu1    30    0 209:37:17  35% bwengine/64
27109 adinstan 469M 323M cpu17 20 0 209:37:45 35% bwengine/64
27109 adinstan 469M 323M cpu16 20 0 209:38:14 35% bwengine/64
27109 adinstan 469M 323M cpu17 20 0 209:38:56 35% bwengine/64
27109 adinstan 469M 323M cpu18 20 0 209:39:10 35% bwengine/64
27109 adinstan 469M 323M cpu0 10 0 209:39:24 35% bwengine/64
27109 adinstan 469M 323M cpu2 10 0 209:39:38 35% bwengine/64
27109 adinstan 469M 323M cpu19 10 0 209:40:07 35% bwengine/64
Proces skacze po procesorach. Można go dowiązać narzędziami psrset+pbind, co powinno zmniejszyć opóźnienia (ważna rzecz dla np. aplikacji RT).

wtorek, września 08, 2009

Yet another firewall issue



Pod koniec wywołania WebService'u ginie segment TCP; warstwa transportowa ciągle próbuje dokończyć transmisję, co widać jako wiszenie WebService'u. Co ciekawe, w takim przypadku w kliencie .NET ustawienie timeout-u nic nie daje i aplikacja kliencka będzie cała wisieć.

W trybie debugowania pojawia się ContextSwitchDeadlockException: The CLR has been unable to transition from COM context 0x21def80 to COM context 0x21df1d0 for 60 seconds. The thread that owns the destination context/apartment is most likely either doing a non pumping wait or processing a very long running operation without pumping Windows messages. This situation generally has a negative performance impact and may even lead to the application becoming non responsive or memory usage accumulating continually over time. To avoid this problem, all single threaded apartment (STA) threads should use pumping wait primitives (such as CoWaitForMultipleHandles) and routinely pump messages during long running operations.
netsh int tcp set global autotuninglevel=disabled
DefaultTTL=128, SackOpts=0

sobota, września 05, 2009

Software'owy RAID w W2K8

Mirror partycji systemowej możemy stworzyć paroma kliknięciami bez restartu. Do boot menu dodana zostanie pozycja umożliwiająca odpalenie systemu z drugiego dysku. Wszystko dużo łatwiejsze i szybsze niż w Linuksie i Solarisie. Mój ulubiony layout: RAID1 + RAID0.


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.

piątek, lipca 24, 2009

Eksport bookmarków

Breakable Oracle
PoznajFakty
Nie należy krzyczeć na serwer
Cytaty z House'a
Generator newsów
Proxy detector

czwartek, lipca 23, 2009

NTLM Jira workaround

REGEDIT4

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]
"ProxyOverride"="jira;"
"DisableNTLMPreauth=dword:00000001

IE czasami gubi się w trakcie handshake'u NTLM, zwłaszcza kiedy dostaje żądanie autoryzacji od razu przy ładowaniu URL-a, a nie po HTTP 304 czy wybraniu linka.

wtorek, lipca 21, 2009

Pogoda

Widok z góry

niedziela, lipca 19, 2009

Safari najszybsze

Futuremark Peacekeeper