2

Embedded Glassfishサーバーで実行される非常に単純なWebサービスがあります。

@Stateless
@Path("/id")
@Produces(MediaType.TEXT_HTML)
public class SimpleFacadeBean {

    @GET
    public String sayHello(@Context HttpServletRequest request, @Context HttpServletResponse response) {
        return "Hello world!";
    }
}

すべての Web サービス呼び出しのルート要素を設定する、対応するクラス:

@ApplicationPath("root")
public class ApplicationConfig extends Application {
}

すべて正常に動作しますが、この GET メソッドを SSL で保護したいと考えています。thisthisなどのマニュアルを読みました。SSL 接続の Glassfish 部分の構成には興味がありません (方法は知っています)。ただ、GET メソッドをlocalhost:8080/root/application.wadlリンクに表示したくないだけです (これは、私の Web サービスがデフォルトの非セキュア 8080 ポートではなく、8181 セキュア グラスフィッシュ ポートに接続されています)。この目的のために、web.xml 記述子を作成し、webapp/WEB-INF ディレクトリに配置しました。最も興味深い部分は次のようになります。

<security-constraint>   
    <display-name>SecurityConstraint</display-name>   
    <web-resource-collection>   
        <web-resource-name>Secure Area</web-resource-name>   
        <url-pattern>/root/id</url-pattern>               
        <http-method>GET</http-method>   
    </web-resource-collection>             
    <user-data-constraint>   
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>   
    </user-data-constraint>   
</security-constraint>   

しかし、実行後、( application.wadlで) Web サービスの URL がセキュリティで保護されていないポート (8181 ではなく 8080) に接続されていることがわかりました。コードを正しく機能させるために、他の多くの方法を試しました。私はまったく成功しませんでした。この Web サービスを .war にパッケージ化します。その後、この .war は .ear に移動します。application.wadlに「安全な」Webサービスが表示されないことに成功しない理由はありますか?

4

0 に答える 0