在WSO2业务规则服务器上启用REST



我正在开发Wso2业务规则管理解决方案(Wso2 brs),我已经成功地完成了创建第一个规则的步骤:https://docs.wso2.com/display/BRS220/Creating+和+部署+规则+服务

该规则目前可以通过使用SOAP协议访问,但我希望使用RESThttps://docs.wso2.com/display/BRS220/Features),但我没有发现任何迹象表明如何在BRS上做到这一点。

以下是我的wsdl定义中的几行:

<wsdl2:service name="OrderApprovalService" interface="tns:ServiceInterface">
    <wsdl2:endpoint name="OrderApprovalServiceHttpsEndpoint" binding="tns:OrderApprovalServiceHttpBinding" address="https://10.130.3.70:9443/services/OrderApprovalService.OrderApprovalServiceHttpsEndpoint/"/>
    <wsdl2:endpoint name="OrderApprovalServiceHttpSoap12Endpoint" binding="tns:OrderApprovalServiceSoap12Binding" address="http://10.130.3.70:9763/services/OrderApprovalService.OrderApprovalServiceHttpSoap12Endpoint/"/>
    <wsdl2:endpoint name="OrderApprovalServiceHttpsSoap12Endpoint" binding="tns:OrderApprovalServiceSoap12Binding" address="https://10.130.3.70:9443/services/OrderApprovalService.OrderApprovalServiceHttpsSoap12Endpoint/"/>
    <wsdl2:endpoint name="OrderApprovalServiceHttpSoap11Endpoint" binding="tns:OrderApprovalServiceSoap11Binding" address="http://10.130.3.70:9763/services/OrderApprovalService.OrderApprovalServiceHttpSoap11Endpoint/"/>
    <wsdl2:endpoint name="OrderApprovalServiceHttpEndpoint" binding="tns:OrderApprovalServiceHttpBinding" address="http://10.130.3.70:9763/services/OrderApprovalService.OrderApprovalServiceHttpEndpoint/"/>
    <wsdl2:endpoint name="OrderApprovalServiceHttpsSoap11Endpoint" binding="tns:OrderApprovalServiceSoap11Binding" address="https://10.130.3.70:9443/services/OrderApprovalService.OrderApprovalServiceHttpsSoap11Endpoint/"/>
</wsdl2:service>

我看到有一个"OrderApprovalServiceHttpsEndpoint"和一个"OrderApprovalServiceHttpEndpoint"可以对应于REST Web服务,但我所有访问它们的尝试都失败了。如果我试图在POST请求中发送此模型:

<OrderApprovalRequest>
    <placeOrder>
        <price>7</price>
        <quantity>7</quantity>
        <symbol>Company A</symbol>
    </placeOrder>
</OrderApprovalRequest>

我得到一个错误500:

java.lang.NullPointerException
    org.apache.axis2.transport.http.AxisServlet.handleFault(AxisServlet.java:427)
    org.apache.axis2.transport.http.AxisServlet.processAxisFault(AxisServlet.java:398)
    org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:188)
    org.wso2.carbon.core.transports.CarbonServlet.doPost(CarbonServlet.java:231)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    org.eclipse.equinox.http.servlet.internal.ServletRegistration.service(ServletRegistration.java:61)
    org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:128)
    org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:68)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    org.wso2.carbon.tomcat.ext.servlet.DelegationServlet.service(DelegationServlet.java:68)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    org.wso2.carbon.ui.filters.CSRFPreventionFilter.doFilter(CSRFPreventionFilter.java:88)
    org.wso2.carbon.ui.filters.CRLFPreventionFilter.doFilter(CRLFPreventionFilter.java:59)
    org.wso2.carbon.tomcat.ext.filter.CharacterSetFilter.doFilter(CharacterSetFilter.java:61)

这里有没有人已经成功地做到了这一点?或者谁知道这是否可能?

感谢

您可以使用TryIt工具来尝试您的场景。https://docs.wso2.com/display/BRS200/Testing+WSDL您可以在其中选择HTTP端点,捕获它生成的消息,并使用curl和try对端点使用这些消息。

最新更新