4 WebLogic Server WebサービスとHelidonの統合

Oracle WebLogic Server (WebLogic Server) WebサービスとHelidonの統合により、HelidonクライアントはWebLogic Server Webサービスでコールできます。この統合により、Helidonマイクロサービスは、HelidonからWebLogic ServerへのSOAP Webサービス・コールを使用して、WebLogic Serverアプリケーションと対話できます。

次の図は、WebLogic Server WebサービスとHelidonの統合を示しています:

図4-1 WebサービスとHelidonの統合



この章の内容は次のとおりです。

前提条件

WebLogic ServerをSOAP (Simple Object Access Protocol) Webサービス用にHelidonと統合する場合、すでにWebLogic ServerおよびHelidonをKubernetesクラスタにデプロイしていることが前提となります。「WebLogic ServerとHelidonの統合のためのKubernetesクラスタの準備」を参照してください。
また、WebLogic Serverによって提供される次のjarファイルを取得します:

HelidonとのWebサービス統合の設定

WebLogic Server WebサービスとHelidonの統合により、Helidonマイクロサービス・アプリケーションは、WebLogic ServerにデプロイされたWebLogic Webサービスと通信できます。統合のステップを開始する前に、WebLogic Deploy Tooling (WDT)を使用してJAX-WS Webサービスを作成し、それを補助イメージの一部として含めておく必要があります。Auxiliary Imagesを参照してください。WebLogic Server Webサービスの開発の詳細は、『Oracle WebLogic Server JAX-WS Webサービスの開発』JAX-WS Webサービスの開発例に関する項を参照してください。
Helidonから既存のWebLogic Server Webサービスへのコールを開始するには:
  1. クライアントjarファイルをインストールし、次に示すようにMaven依存関係の一部として含めます:
    Helidon 3.xを使用している場合は、次に示すように、com.oracle.webservices.wls.jaxws-wlswss-client.jakarta.jarクライアントjarファイルをインストールします:
    <dependency>
        <groupId>com.oracle.webservices.wls.jaxws-wlswss-client.jakarta</groupId>
        <artifactId>com.oracle.webservices.wls.jaxws-wlswss-client.jakarta</artifactId>
        <version>1.0</version>
    </dependency>
    Helidon 2.xを使用している場合は、次に示すように、com.oracle.webservices.wls.jaxws-wlswss-client.jarクライアントjarファイルをインストールします:
    <dependency>
        <groupId>com.oracle.webservices.wls.jaxws-wlswss-client</groupId>
        <artifactId>com.oracle.webservices.wls.jaxws-wlswss-client</artifactId>
        <version>1.0</version>
    </dependency>
  2. ステップ1でインストールしたクライアントjarファイルのclientgen WebLogic Server WebサービスAntタスクを使用して、クライアント・アプリケーションに必要なアーティファクトを生成します。これらのアーティファクトが生成され、target/generated-sourcesフォルダに追加されます。

    次の例に示すように、generate-sourcesビルド・フェーズ中にclientgen Antタスクを実行するmaven-antrun-pluginプラグインを追加します:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>3.1.0</version>
        <executions>
            <execution>
                <id>ws-client-gen</id>
                <phase>generate-sources</phase>
                <goals>
                    <goal>run</goal>
                </goals>
                <configuration>
                    <target>
                        <property name="wsdl-file">file://${basedir}/DynamicWSImplService.wsdl</property>
                        <property name="compile_classpath"
                                  refid="maven.compile.classpath"/>
                        <taskdef name="clientgen"
                                 classname="weblogic.wsee.tools.anttasks.ClientGenTask"
                                 classpath="${compile_classpath}"/>
                        <clientgen wsdl="${wsdl-file}"
                                   wsdlLocation="${wsdl-file}"
                                   destDir="${project.build.directory}/generated-sources"
                                   packageName="com.example.wlssoap"
                                   generateRuntimeCatalog="false"
                                   type="JAXWS"
                                   copyWsdl="false"/>
                    </target>
                </configuration>
            </execution>
        </executions>
    </plugin>

    クライアント・アーティファクトの生成の詳細は、クライアント・アーティファクトを生成するためのclientgen Antタスクの使用に関する項を参照してください。

  3. build-helper-maven-pluginプラグインを使用して、生成されたクライアント・クラスを含む/target/generated-sourcesディレクトリを、ソースを含む追加ディレクトリとして追加します。
    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>3.3.0</version>
        <executions>
            <execution>
                <id>add-source</id>
                <phase>generate-sources</phase>
                <goals>
                    <goal>add-source</goal>
                </goals>
                <configuration>
                    <sources>
                        <source>${pom.basedir}/target/generated-sources</source>
                    </sources>
                </configuration>
            </execution>
        </executions>
    </plugin>
  4. 次の例に示すように、Jakartaベース(Helidon 3.xの場合)またはjavaxベース(Helidon 2.xの場合)のRESTful Webサービスを作成し、生成されたクライアント・クラスを使用してWebLogic Webサービスを呼び出します。
    @Path("/helidon-client")
    @ApplicationScoped
    public class HelidonWSEEClient {
    
        @Inject
        @ConfigProperty(name = "remote.wsdl.location")
        private String remoteWsdlLocation;
    
        @GET
        @Path("/getWLSWebserviceResult/subtract/{y}/from/{x}")
        @Produces(MediaType.APPLICATION_JSON)
        public JsonObject invokeWLSWebservice(@PathParam("x") int x,
                                              @PathParam("y") int y) {
            DynamicWSImplService testService = new DynamicWSImplService();
            DynamicWSImpl testPort = testService.getDynamicWSImplPort();
            ((BindingProvider) testPort).getRequestContext()
                    .put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, remoteWsdlLocation);
    
            int response = testPort.subtract(x,y);
    
            return Json.createObjectBuilder().add("ws-response", response).build();
        }
    }
  5. 次のコマンドを使用してMaven RESTクライアントをコンパイルすることで、Helidonクライアントをビルドし、WebLogic Server Webサービスを呼び出します:
    mvn clean package
  6. 次のコマンドを使用して、Helidonサーバーを起動します:
    java -jar target/<Helidion-Project-Name>.jar

    Helidonサーバーが起動すると、マイクロサービスがデプロイされ、使用する準備が整います。マイクロサービス・アプリケーションにローカルにアクセスするには、http://<HELIDON_HOST>:<HELIDON_PORT>/helidon-client/getWLSWebserviceResult/subtract/5/from/10 URLを使用します。

    <HELIDON_HOST>および<HELIDON_PORT>は、Helidonマイクロサービス・アプリケーションが実行されているホストを参照します。