27 stycznia 2010

Komisja Europejska akceptuje przejęcie SUNa

Oracle otrzymał bezwarunkową zgodę Komisji Europejskiej na przejęcie SUNa. Swojego TAK nie wypowiedziały jeszcze Chiny i Rosja, ale sprawa wydaje się być przesądzona. Co to oznacza dla przyszłości Javy? W swoim FAQ na temat przejęcia SUNa Oracle obiecuje, że będzie tylko lepiej:

"Oracle plans to accelerate investment in the Java platform for the benefit of customers and the Java community. (...) Oracle plans to not only broaden and accelerate its own investment in the Java platform, but also plans to increase the commitment to the community that helps make Java an ubiquitous, innovative platform unified around open standards."

Dziś, tj. 27 stycznia 2010, w godzinach 9:00 – 14:00 czasu tamtejszego (18:00 - 23:00 czasu polskiego) odbędzie się w siedzibie Oracle konferencja prasowa na temat strategii "Oracle + SUN". Ja raczej poczekam do dnia następnego żeby przeczytać jakiś skrót, ale jeśli ktoś nie może się doczekać (tudzież chce z innych względów posłuchać), to może - wydarzenie można oglądać w formie webcasta.

19 stycznia 2010

Uruchamiamy usługę JAX-WS na serwerze Tomcat

Jakiś czas temu (już dosyć dawno) zmagałem się z uruchomieniem usługi sieciowej JAX-WS na serwerze Tomcat. Nie udało mi się wtedy... ale udało mi się dzisiaj. A udało mi się, bo wszystko co było trzeba (a o czym nie wiedziałem) zrobił za mnie nowy NetBeans w wersji 6.8.

Pobrałem zaimplementowany przez samego siebie - i opisany w artykule "JAX-WS i Maven 2 w podejściu Contract First Development" - projekt implementacji usługi sieciowej z użyciem technologi JAX-WS i postanowiłem jeszcze raz zmierzyć się z problemem. Projekt po zaimportowaniu do Eclipsa nie chciał się kompilować, a że nie byłem w nastroju do walki tego rodzaju, sięgnąłem po NetBeans IDE. Projekt zaimportował się i zbudował bez problemu. Skonfigurowałem serwer Tomcat w wersji 6.0.20 i kliknąłem 'Run'. Zaskoczenie było ogromne - NetBeans odezwał się komunikatem:

Kliknięcie na guzik z napisem 'Yes' spowodowało utworzenie pliku 'sun-jaxws.xml' i dodanie co nieco do pliku 'web.xml'. Uruchomienie mimo wszystko zakończyło się błędem:

java.lang.ClassNotFoundException:
com.sun.xml.ws.transport.http.servlet.WSServletContextListener

Dziwne - Tomcat nie widzi klas JAX-WS. Co prawda Tomcat ich nie zawiera, ale powinny być w Java SE 6 SDK! W każdym razie póki co postanowiłem poradzić sobie z tym problemem w sposób prosty, a mianowicie dodać niezbędne JARy do WARa. W tym celu usunąłem linijkę '<scope>provided</scope>' z konfiguracji zależności od JAX-WS w projekcie 'math-ws':

<dependency>
<groupid>com.sun.xml.ws</groupid>
<artifactid>jaxws-rt</artifactid>
<version>2.1.3</version>
<scope>provided</scope>
</dependency>

Przebudowałem projekt i ponownie kliknąłem 'Run'. Sukces! W ten oto prosty sposób udało mi się z pomocą NetBeans IDE uruchomić usługę sieciową JAX-WS na serwerze Tomcat. Dla ciekawych podaje jeszcze zawartość wygenerowanych plików 'web.xml' i 'sun-jaxws.xml' (w tej właśnie kolejności):

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<listener>
<listener-class>
com.sun.xml.ws.transport.http.servlet.WSServletContextListener
</listener-class>
</listener>
<servlet>
<servlet-name>MathServiceBeanService</servlet-name>
<servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>MathServiceBeanService</servlet-name>
<url-pattern>/MathServiceBeanService</url-pattern>
</servlet-mapping>
</web-app>

<?xml version="1.0" encoding="UTF-8"?>
<endpoints version="2.0" xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime">
<endpoint
implementation="pl.centric.jaxws.math.service.MathServiceBean"
name="MathServiceBeanService"
url-pattern="/MathServiceBeanService"/>
</endpoints>