Java 在基于JAX-WS的应用程序上启用HTTP选项方法

Java 在基于JAX-WS的应用程序上启用HTTP选项方法,java,soap,cors,jax-ws,options,Java,Soap,Cors,Jax Ws,Options,我有一个简单的JAX-WS应用程序,可以通过SOAP-UI正常工作,但是由于JavaScript中的CORS限制,需要该应用程序或我的Web服务器响应http选项请求 我四处搜索,没有找到使用JAX-WS响应选项请求的解决方案 正在使用的Web服务器是Oracle WebLogic 12c 请告知您是否遇到了一个变通方法,或者是否有另一个更适合使用的java库 谢谢我相信您正在寻找@OPTIONS注释,如何: @OPTIONS @PermitAll public Response options

我有一个简单的JAX-WS应用程序,可以通过SOAP-UI正常工作,但是由于JavaScript中的CORS限制,需要该应用程序或我的Web服务器响应http选项请求

我四处搜索,没有找到使用JAX-WS响应选项请求的解决方案

正在使用的Web服务器是Oracle WebLogic 12c

请告知您是否遇到了一个变通方法,或者是否有另一个更适合使用的java库


谢谢

我相信您正在寻找@OPTIONS注释,如何:

@OPTIONS
@PermitAll
public Response options() {
    return Response.status(Response.Status.NO_CONTENT).build();
}

请参阅以获取可能的答案

我相信您正在寻找@OPTIONS注释,如何:

@OPTIONS
@PermitAll
public Response options() {
    return Response.status(Response.Status.NO_CONTENT).build();
}

请参阅以获取可能的答案最终我们采用了以下方法。。对于JS调用该服务来说,它工作得很好

    @Path("/createCorrespondenceREST")
public class CreateCorrespondenceREST {


    @OPTIONS
    @PermitAll
    public Response options() {
        return Response.ok() //200
                .header("Access-Control-Allow-Origin", "*")             
                .header("Access-Control-Allow-Methods", "GET, OPTIONS")
                .header("Access-Control-Allow-Headers", "Access-Control-Allow-Methods, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers")
                .header("Access-Control-Request-Headers", "Access-Control-Allow-Origin, Content-Type")
                .allow("OPTIONS").build();
    }


   @GET
   @Produces("text/html")
   public Response createCorrespondence(
           @QueryParam("pSource")   java.lang.String pSource,
           @QueryParam("pTemplate") java.lang.String pTemplate,
           @QueryParam("pSourceCode") java.lang.String pSourceCode,
           @QueryParam("pSourceCodeType") java.lang.String pSourceCodeType,
           @QueryParam("pSourceVersion") java.math.BigDecimal pSourceVersion,
           @QueryParam("pRecipient") java.lang.String pRecipient,
           @QueryParam("pLanguage") java.lang.String pLanguage,
           @QueryParam("pSendDate") java.lang.String pSendDate,
           @QueryParam("pBatchNo") java.math.BigDecimal pBatchNo,
           @QueryParam("pHideDocument") java.lang.String pHideDocument,
           @QueryParam("pExternalReference") java.lang.String pExternalReference,
           @QueryParam("pInStr1") java.lang.String pInStr1,
           @QueryParam("pInStr2") java.lang.String pInStr2,
           @QueryParam("pInStr3") java.lang.String pInStr3,
           @QueryParam("pInStr4") java.lang.String pInStr4,
           @QueryParam("pInStr5") java.lang.String pInStr5,
           @QueryParam("pInStr6") java.lang.String pInStr6,
           @QueryParam("pInStr7") java.lang.String pInStr7,
           @QueryParam("pInStr8") java.lang.String pInStr8,
           @QueryParam("pInStr9") java.lang.String pInStr9,
           @QueryParam("pInStr10") java.lang.String pInStr10,
           @QueryParam("pInInt1") java.math.BigDecimal pInInt1,
           @QueryParam("pInInt2") java.math.BigDecimal pInInt2,
           @QueryParam("pInInt3") java.math.BigDecimal pInInt3,
           @QueryParam("pInInt4") java.math.BigDecimal pInInt4,
           @QueryParam("pInInt5") java.math.BigDecimal pInInt5,
           @QueryParam("pInDate1") java.lang.String pInDate1,
           @QueryParam("pInDate2") java.lang.String pInDate2,
           @QueryParam("pInDate3") java.lang.String pInDate3,
           @QueryParam("pInDate4") java.lang.String pInDate4,
           @QueryParam("pInDate5") java.lang.String pInDate5
           ) {



       try {


            String pResponse = callLHHCorrDB.createCorrespondence(pSource,
                    pTemplate,
                    pSourceCode,
                    pSourceCodeType,
                    pSourceVersion,
                    pRecipient,
                    pLanguage,
                    vSendDate,
                    pBatchNo,
                    pHideDocument,
                    pExternalReference,
                    pInStr1,
                    pInStr2,
                    pInStr3,
                    pInStr4,
                    pInStr5,
                    pInStr6,
                    pInStr7,
                    pInStr8,
                    pInStr9,
                    pInStr10,
                    pInInt1,
                    pInInt2,
                    pInInt3,
                    pInInt4,
                    pInInt5,
                    vInDate1,
                    vInDate2,
                    vInDate3,
                    vInDate4,
                    vInDate5);


            return Response.ok() //200
                    .entity(pResponse)
                    .header("Access-Control-Allow-Origin", "*")             
                    .header("Access-Control-Allow-Methods", "GET, OPTIONS")
                    .header("Access-Control-Allow-Headers", "Access-Control-Allow-Methods, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers")
                    .header("Access-Control-Request-Headers", "Access-Control-Allow-Origin, Content-Type")
                    .allow("OPTIONS").build();

    } catch (Exception e) {
        // TODO Auto-generated catch block      
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        PrintStream ps = new PrintStream(baos);
        e.printStackTrace(ps);
        ps.close();
        return null;    
    }



   }



}

谢谢你的帮助。

最后我们做了以下几点。。对于JS调用该服务来说,它工作得很好

    @Path("/createCorrespondenceREST")
public class CreateCorrespondenceREST {


    @OPTIONS
    @PermitAll
    public Response options() {
        return Response.ok() //200
                .header("Access-Control-Allow-Origin", "*")             
                .header("Access-Control-Allow-Methods", "GET, OPTIONS")
                .header("Access-Control-Allow-Headers", "Access-Control-Allow-Methods, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers")
                .header("Access-Control-Request-Headers", "Access-Control-Allow-Origin, Content-Type")
                .allow("OPTIONS").build();
    }


   @GET
   @Produces("text/html")
   public Response createCorrespondence(
           @QueryParam("pSource")   java.lang.String pSource,
           @QueryParam("pTemplate") java.lang.String pTemplate,
           @QueryParam("pSourceCode") java.lang.String pSourceCode,
           @QueryParam("pSourceCodeType") java.lang.String pSourceCodeType,
           @QueryParam("pSourceVersion") java.math.BigDecimal pSourceVersion,
           @QueryParam("pRecipient") java.lang.String pRecipient,
           @QueryParam("pLanguage") java.lang.String pLanguage,
           @QueryParam("pSendDate") java.lang.String pSendDate,
           @QueryParam("pBatchNo") java.math.BigDecimal pBatchNo,
           @QueryParam("pHideDocument") java.lang.String pHideDocument,
           @QueryParam("pExternalReference") java.lang.String pExternalReference,
           @QueryParam("pInStr1") java.lang.String pInStr1,
           @QueryParam("pInStr2") java.lang.String pInStr2,
           @QueryParam("pInStr3") java.lang.String pInStr3,
           @QueryParam("pInStr4") java.lang.String pInStr4,
           @QueryParam("pInStr5") java.lang.String pInStr5,
           @QueryParam("pInStr6") java.lang.String pInStr6,
           @QueryParam("pInStr7") java.lang.String pInStr7,
           @QueryParam("pInStr8") java.lang.String pInStr8,
           @QueryParam("pInStr9") java.lang.String pInStr9,
           @QueryParam("pInStr10") java.lang.String pInStr10,
           @QueryParam("pInInt1") java.math.BigDecimal pInInt1,
           @QueryParam("pInInt2") java.math.BigDecimal pInInt2,
           @QueryParam("pInInt3") java.math.BigDecimal pInInt3,
           @QueryParam("pInInt4") java.math.BigDecimal pInInt4,
           @QueryParam("pInInt5") java.math.BigDecimal pInInt5,
           @QueryParam("pInDate1") java.lang.String pInDate1,
           @QueryParam("pInDate2") java.lang.String pInDate2,
           @QueryParam("pInDate3") java.lang.String pInDate3,
           @QueryParam("pInDate4") java.lang.String pInDate4,
           @QueryParam("pInDate5") java.lang.String pInDate5
           ) {



       try {


            String pResponse = callLHHCorrDB.createCorrespondence(pSource,
                    pTemplate,
                    pSourceCode,
                    pSourceCodeType,
                    pSourceVersion,
                    pRecipient,
                    pLanguage,
                    vSendDate,
                    pBatchNo,
                    pHideDocument,
                    pExternalReference,
                    pInStr1,
                    pInStr2,
                    pInStr3,
                    pInStr4,
                    pInStr5,
                    pInStr6,
                    pInStr7,
                    pInStr8,
                    pInStr9,
                    pInStr10,
                    pInInt1,
                    pInInt2,
                    pInInt3,
                    pInInt4,
                    pInInt5,
                    vInDate1,
                    vInDate2,
                    vInDate3,
                    vInDate4,
                    vInDate5);


            return Response.ok() //200
                    .entity(pResponse)
                    .header("Access-Control-Allow-Origin", "*")             
                    .header("Access-Control-Allow-Methods", "GET, OPTIONS")
                    .header("Access-Control-Allow-Headers", "Access-Control-Allow-Methods, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers")
                    .header("Access-Control-Request-Headers", "Access-Control-Allow-Origin, Content-Type")
                    .allow("OPTIONS").build();

    } catch (Exception e) {
        // TODO Auto-generated catch block      
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        PrintStream ps = new PrintStream(baos);
        e.printStackTrace(ps);
        ps.close();
        return null;    
    }



   }



}

感谢您的帮助。

嗨,Laurent,谢谢您-这帮了我-我不得不将服务重写为REST服务以允许选项响应,即使JQuery可以处理SOAP和REST,它仍然需要选项响应。OPTIONS是一种REST方法,这就是为什么在我尝试使用JAX-WS时它从未起作用。感谢您的帮助:)嗨,Laurent,谢谢您-这帮了我-我不得不将服务重写为REST服务以允许选项响应,即使JQuery可以处理SOAP和REST,它仍然需要选项响应。OPTIONS是一种REST方法,这就是为什么在我尝试使用JAX-WS时它从未起作用。谢谢你的帮助:)