Ta reguła wykrywa obecność usług WWW JAX-RPC na postawie następujących kryteriów:
- Obecność pliku web-services.xml.
- Obecność pliku weblogic-webservices.xml i pliku webservices.xml w tym samym folderze.
Rozwiązanie ręczne
Aby wygenerować usługi sieciowe JAX-RPC na podstawie deskryptorów wdrożenia usługi sieciowej WebLogic J2EE, należy ręcznie utworzyć skrypt Ant przy użyciu określonych zadań IBM® Ant zadań. Skrypt należy dodać do głównego folderu projektu, jeśli plik wygenerowany przez IBM Ant jeszcze nie istnieje. Zadania te będą obsługują generowanie usług sieciowych JAX-RPC z deskryptorów wdrożenia.
Właściwości reguły
Należy podać prawidłowe wartości właściwości reguły, aby zapewnić dokładne wyniki podczas analizy. Właściwości te powinny zostać sprawdzone i odpowiednio skonfigurowane w oparciu o kontekst aplikacji. Właściwości dla tej reguły są następujące:
- Nazwa generowanego skryptu Ant:
Określa nazwę nowego wygenerowanego skryptu Ant. Nazwa skryptu musi zawierać prawidłową nazwę pliku musi być prawidłową nazwą pliku. Wartość nie może zawierać żadnych ukośników do przodu ani do tyłu. Skrypt będzie znajdował się w folderze głównym projektu.
Wartość domyślna: build-ibm-ws.xml.
- Nazwa folderu generowania:
Określa nazwę folderu, w którym będą znajdować się wygenerowane artefakty; Wartość nie może zawierać żadnych ukośników do przodu ani do tyłu. Folder generowania będzie znajdować się w folderze głównym projektu.
Wartość domyślna: ibm-ws-gen.
Ścieżka klas Ant
Ścieżka klas ant jest obliczana na podstawie projektu Eclipse.
Ważne jest, aby zweryfikować, czy wszystkie elementy wymagane na potrzeby kompilacji znajdują się w ścieżce klas środowiska Eclipse.
Usługi JAX-RPC zdefiniowane w pliku web-services.xml
Na podstawie informacji i typu usług zdefiniowanych w pliku web-services.xml generowany jest skrypt Ant, a prawdopodobnie także dodatkowy kod Java reprezentujący interfejs punktu końcowego usługi Web Service w celu ponownego wygenerowania usługi JAX-RPC.
- Obsługiwane komponenty
Tylko komponenty Stateless Session Enterprise Beans (<stateless-ejb>) i Java (R) (<java-class>) mogą być konwertowane mogą być rozpoznawane i konwertowane.
- Bezstanowe komponenty EJB:
Plik JAR Enterprise JavaBeans (TM) (EJB), zdefiniowany w atrybucie ścieżki elementu <ejb-link>, musi istnieć w projekcie. Zautomatyzowana poprawka skanuje plik EJB JAR i generuje nową klasę Service Endpoint Interface (SEI) na podstawie zdalnej klasy EJB.
Interfejsy SEI różnią się od zdalnych interfejsów EJB tym, że że klasa musi rozszerzać
java.rmi.Remote
, a każda metoda musi rzucić wyjątek,
java.rmi.RemoteException
.
Zautomatyzowana poprawka użyje Java refleksji na zdalnym interfejsie EJB do wygenerowania nowego SEI .
Dlatego upewnij się, że ścieżka klas projektu Eclipse zawiera wszystkie niezbędne klasy, pliki JAR i wymagane katalogi do pomyślnego załadowania zdalnej klasy EJB.
SEI musi zostać wygenerowany w folderze sei wewnątrz folderu generowania folderu generowania, podanego przez użytkownika w regule properties. Pakiet SEI odpowiada pakietowi zdalnego interfejsu EJB a nazwa SEI będzie taka sama jak zdalnego interfejsu EJB z dołączonym słowem SEI. Ponadto, nowy folder SEI zostanie dodany do ścieżki klas projektu.
- Komponenty klasy Java:
Podobnie jak w przypadku komponentów EJB, automatyczna poprawka wygeneruje interfejs punktu końcowego usługi z klasy Java, która jest zdefiniowana w atrybucie <class-name>.
- Generowane elementy docelowe narzędzia Ant:
Wygenerowany skrypt Ant zawiera cele do wygenerowania pliku WSDL i usługi JAX-RPC w oparciu o nowy SEI, który zostanie utworzony.
Cel generowania WSDL będzie miał nazwę, genWSDL_ssss, gdzie ssss jest nazwą usługi JAX-RPC, która została w polu atrybutu name elementu <web-service> elementu.
Cele generowania usług mają nazwę, genService_pppp, gdzie pppp jest nazwą komponentu z atrybutu name atrybutu elementu <stateless-ejb> lub <java-class>.
Zautomatyzowana poprawka nie będzie wykorzystywać informacji dostarczonych w innych elementach, takich jak <handlers-chain>, <types>, <operations>, <security> i tak dalej.
Usługi JAXRPC zdefiniowane w pliku webservices.xml
Na podstawie informacji i typu usług zdefiniowanych w pliku webservices.xml generowany jest skrypt Ant w celu ponownego wygenerowania usługi JAX-RPC.
- Generowane elementy docelowe narzędzia Ant:
Wygenerowany skrypt Ant zawiera cele umożliwiające wygenerowanie pliku WSDL i usługi JAX-RPC.
Cel generowania WSDL jest generowany tylko wtedy, gdy nie można zlokalizować pliku WSDL zdefiniowanego w elemencie, <wsdl-file>.
Jeśli zostanie utworzony, cel generowania WSDL ma nazwę nazwę genWSDL_ssss,, gdzie ssss to nazwa usługi zdefiniowana w elemencie w elemencie <webservice-description-name>.
Cele generowania usług będą miały nazwę, genService_pppp, gdzie pppp jest nazwą portu zdefiniowaną przez element element <port-component-name>.
Zadania Ant serwera IBM WebSphere Application Server
Serwer WebSphere(R) Application Server zawiera zadania Ant, takie jak java2wsdl i wsdl2java służące do tego, aby wygenerować wymagane artefakty dla usług JAX-RPC. Wygenerowany skrypt Ant używa tych zadań do budowania usługi.
Dodatkowe informacje na temat tych zadań można uzyskać
w dokumentacji serwera WebSphere Application Server.
Uruchamianie skryptu Ant
Po utworzeniu skryptu Ant należy go wyświetlić i w razie potrzeby dodać dodatkowe dostosowania.
Więcej informacji na temat dodatkowych modyfikacji zadań programu IBM Ant można znaleźć w dokumentacji serwera aplikacji.
Skrypt należy uruchomić za pomocą narzędzi Ant,
które są dołączone do produktu WebSphere Application Server. Skrypt IBM Ant można
uruchomić z:
- WAS_HOME\bin\ws_ant.bat w systemach operacyjnych Windows(R)
- WAS_HOME\bin\ws_ant.sh w systemach operacyjnych UNIX(R)
Przykład: c:\IBM\AppServer\bin\ws_ant.bat -f
c:\eclipse\MyProject\ibm-ws-gen.xml genService_TestService
Po uruchomieniu celów Ant, wygenerowane artefakty znajdują się w folderze generowania w folderze generowania. Użytkownik może następnie sprawdzić wygenerowany kod i deskryptory wdrożenia, a następnie dodać te artefakty do swoich modułów modułów.
Zalecenie: Rozważ migrację do JAX-WS
Jeśli już wprowadzasz zmiany w swoich usługach internetowych JAX-RPC w ramach migracji lub modernizacji, zdecydowanie zalecamy ocenę przejścia na JAX-WS ( Java API for XML Web Services).
JAX-WS jest następcą JAX-RPC i oferuje kilka korzyści:
- Nowoczesny projekt API z lepszą obsługą adnotacji i integracją z Java EE
- Ulepszona interoperacyjność z innymi ramami i standardami usług sieciowych
- Lepsze narzędzia i wsparcie w nowoczesnych serwerach aplikacji i IDE
- Długoterminowa rentowność, ponieważ JAX-RPC jest uważany za starszą technologię
Migracja do JAX-WS już teraz może zmniejszyć przyszły dług techniczny i dostosować aplikację do aktualnych standardów usług sieciowych Java.
Wskazówki dotyczące migracji z JAX-RPC do JAX-WS można znaleźć w scenariuszach migracji usług sieciowych: dokumentacji JAX-RPC do JAX-WS i JAXB.