Java: używanie punktu końcowego do publikowania usługi webservice na serwerze tomcat

Tworzę prosty serwis internetowy SOAP. mam zapewnić, że działa on na usłudze internetowej tomcat.

Próbuję zaimplementować to za pomocą JAX-WS (patrz kod)

Moje pytanie brzmi: czy punkt końcowy.Opublikuj Użyj serwera tomcat, aby go hostować, czy jest to serwer typu mini glassfish?

Czy powinienem rozszerzać UnicastRemoveObject czy coś podobnego?

Idealnie byłoby, gdyby można było go zapakować doWojny i spadła do katalogu i po prostu praca.

Wydaje się, że nie działa z moim zainstalowanym serwerem tomcat, ponieważ mówi, że port jest już używany. Używam Ubuntu karmic z zainstalowanym pakietem tomcat6, może to być również mój użytkownik nie ma uprawnień do publikowania w uruchomionym tomcat na 8080

Mam nadzieję, że to pytanie jest wystarczająco jasne

Przykładowy kod:

@WebService
public class UserAttributes {
    public static void main(String[] args) {
        UserAttributes instance = new UserAttributes();
        Endpoint.publish("http://localhost:8082/WebServices/userattributes", 
            instance);
    }

    public string Hello() {
       return "Hello World";
    }
}
Author: Jon Seigel, 2010-01-18

2 answers

Czy Endpoint.publish używa serwera tomcat do hostowania tego, czy jest to serwer typu mini glassfish?

JAX-WS Ri Endpoint.publishAPI domyślnie używa lekkiej implementacji serwera HTTP , która jest zawarta w Javie SE 6 firmy Sun. Tak więc nie, nie używa wbudowanego GlassFish ani wbudowanego Tomcat, a nawet mniej istniejącej instalacji Tomcat: używa wbudowanego kontenera , tzn. czegoś działającego wewnątrz tego samego JVM. Po prostu FYI, jest jednak możliwe, aby podłączyć inne implementacje, o ile zapewniają implementację dostawcy usług (SPI). Na przykład Jetty 6 tak robi, zobacz J2se6HttpServerSPI. Ale nie będę tu opisywał wszystkich szczegółów:)

Wydaje się, że nie działa z moim zainstalowanym serwerem tomcat, ponieważ mówi, że port jest już używany.

Jak powiedziałem powyżej, Enpoint.publish API nie używa istniejącej instalacji Tomcat. Korzysta z własnego serwera i umożliwia wdrożenie serwisu www bez konieczności pakowania i wdrażania aplikacji. Jest to szczególnie przydatne podczas rozwoju (ponieważ przyspiesza rzeczy). Właściwie to jest bardzo poręczny.

Teraz, jeśli masz serwer Tomcat uruchomiony na porcie 8082 i jeśli spróbujesz opublikować swój Endpoint używając tego samego portu, rzeczy nie będą działać tak, jak zauważyłeś. Używaj innego (i nieużywanego) portu podczas programowania.

I jeśli chcesz wdrożyć swoje usługi internetowe do istniejącej instalacji Tomcat, musisz je spakować na wojnę i / align = "left" / Ale to jest zupełnie inne i nie ma nic wspólnego z używaniem Endpoint.publish API.

 24
Author: Pascal Thivent,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-30 13:29:44

Bardzo ciekawe. Wydaje mi się, że wbudowany serwer zawiera również silnik soap do przetwarzania wiadomości soap wysyłanych do tego portu. Czy jest to również wbudowany silnik soap, czy też korzysta z jednego z popularnych silników soap (axis2, CXF, metro)

 1
Author: Joseph,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-12 19:12:01