18. 11. 2014

Jak vygenerovat SOAP klienta z WSDL pomocí JAX-WS maven pluginu

Možností, jak v Javě vygenerovat SOAP klienta z WSDL, je několik. Já jsem se rozhodl použít JAX-WS maven plugin, protože to mi přijde nejjednodušší. Postup je následující:

1. Vytvořit nový maven projekt:

Tím vznikne nový projekt s názvem soap-test.

2. Upravit pom.xml, který vznikne, tak aby vypadal následovně:

Přidali jsme dependence na jaxws-rt a policy, referenci na plugin jaxws-maven-plugin a řekli maven-compiler-pluginu, že chceme pro build použít Javu 1.6, protože JAX-WS potřebuje nejmíň Javu 5. Sun repository (maven2-repository.dev.java.net) je tam pro případ, že by si maven stěžoval na unresolved dependency na com.sun.xml.ws-rt, jinak není potřeba.

3. Zkopírovat do vytvořeného projektu WSDL soubor

V adresáři src v nově vygenerovaném projektu vytvoříme podadresář wsdl a do něj zkopírujeme náš WSDL soubor. Výsledná cesta k WSDL souboru je pak tedy:

soap-test/src/wsdl/my-service.wsdl

Teď už stačí jen spustit build (mvn install nebo mvn jaxws:wsimport) a vygenerované .java soubory najdeme v adresáři:

soap-test/target/jaxws/wsimport/java/cz/vancisin/schema/

4. 11. 2014

Java metoda pro normalizaci českých stringů v Javě

Jeden z požadavků v aplikaci trénujpaměť.cz je, aby při vyhodnocování odpovědí nebyla brána v úvahu velká a malá písmena a diakritika. Takže pokud je správná odpověď například kočárek, systém by měl uznat kocarek, kočárek i Kočárek.

Vytvořil jsem proto následující metodu, která provádí normalizaci stringů - upraví je tak, že:

Jak funguje je nejlépe vidět v unit testu:

A samotná implementace vypadá takto:

Použití je jednoduché - oba porovnávané řetězce (v případě trénujpaměť.cz správnou a zadanou odpověď) napřed normalizovat a až pak porovnat:-)