Czy ktoś wie, jak to skonfigurować, aby usługa SOAP i usługa REST mogły współużytkować ten sam port za pomocą usługi Jersey (Grizzly) poza serwerem aplikacji?Jak hostować usługę SOAP i usługę REST w tym samym porcie?
- Moje usługi mydło jest w www.someurl.com:port/soap/crm
- Moje usługi reszta jest w www.someurl.com:port/crm
Usługi te mają te same port, ale nie ten sam adres bazowy i dlatego powinien być w stanie działać obok siebie na tym porcie. Istnieje jednak błąd powiązania portu.
Wszystko to w niestandardowej aplikacji usługowej i nie ma pliku web.xml lub innego.
Usługa REST korzysta z usługi Jersey, a usługa Soap jest klasą "Usługa odbioru" opublikowaną w punkcie końcowym.
URI soapUri = URI.create("192.168.0.0:1234\soap\Crm")
URI restUri = URI.create("192.168.0.0:1234\crm")
// START SOAP SERVICE
Object reception = getObjectResource(ReceptionService.class);
Endpoint e = Endpoint.publish(soapUri, reception);
// START REST SERVICE
ResourceConfig rc = new ResourceConfig().packages("company.rest");
HttpServer server = GrizzlyHttpServerFactory.createHttpServer(restUri, rc);
Kiedy próbuję to, Grizzly wypluwa 'java.net.BindException: Address already in use bind'
Mój odbiór serwis mydło jest ustawiony tak:
@WebService(targetNamespace = "company.crm")
@SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
public class Reception implements ReceptionService {
... methods
}
My klasy usług reszta są opatrzone jak zwykle jak ...
@Path("hello/{username}")
public class Hello { ... }
Jestem trochę newbie w tym a i jakiekolwiek wskazówki byłyby doceniane. I proszę, nie przejmuj się sugerowaniem uruchamiania serwera aplikacji. To nie jest problem - problem polega na tym, jak obejść problem związany z portem bez przechodzenia do innej struktury usług sieciowych?
UWAGA RE BOUNTY. NIE MOGĘ iteracyjne to wystarczy
„Zwycięzca nagród pokaże, jak korzystać z Jersey do odpoczynku i usługi SOAP Java (adnotacją JAX-WS) razem na tym samym punkcie końcowym odpowiedź będzie nie wymaga zmian w klasach adnotowanych Odpoczynku i Mydła, jednak zmiany kodu serwera HTTP lub zmiany konfiguracji w celu jego działania są dopuszczalne. Przełączenie na Jetty lub inny serwer aplikacji jest nie do przyjęcia Rozwiązanie musi być w 100% osadzone i uruchomione przy użyciu Java SE i biblioteki serwisów Java. "
Przydałoby się trochę więcej informacji, np. jakiego typu serwera internetowego/serwera aplikacji używasz? Jak wygląda "web.xml"? –
znalazłeś rozwiązanie? Mam do czynienia z tym samym problemem –
Nie. Nadal trzymam je w osobnych portach. Musiałbym dużo przerobić mój kod i nie mam czasu ani cierpliwości. Mając nadzieję, że będzie to konfigurowalne w przyszłości. –