在WSO2 ESB 4.9.0中使用payloadFactory生成javascript负载

在WSO2 ESB 4.9.0中使用payloadFactory生成javascript负载,wso2,wso2esb,Wso2,Wso2esb,我想在WSO2 ESB 4.9.0中创建一个API资源,它在其中发回一个包含javascript内容的负载。此资源必须返回内容类型为text/javascript的响应 为此,我使用payloadFactory中介,在这里我设置了一个简单的注释行。因为没有媒体类型为纯文本或纯文本javascript的payloadFactory,所以我使用media type=“json” 而且,我得到了很好的回应。但是,当我将messageType设置为“text/javascript”时,我在响应中得到20

我想在WSO2 ESB 4.9.0中创建一个API资源,它在其中发回一个包含javascript内容的负载。此资源必须返回内容类型为text/javascript的响应

为此,我使用payloadFactory中介,在这里我设置了一个简单的注释行。因为没有媒体类型为纯文本或纯文本javascript的payloadFactory,所以我使用media type=“json”

而且,我得到了很好的回应。但是,当我将messageType设置为“text/javascript”时,我在响应中得到202个http代码,负载为空

调用PlainTextFormatter时,我可以在日志中看到nullPointerException,因为我在axis2.xml中设置了org.apache.axis2.format.PlainTextFormatter和org.apache.axis2.format.PlainTextBuilder

我的资源如下:

    <resource methods="GET" uri-template="/js">
    <inSequence>
        <log>
            <property name="*** IN" value="[API] /test/v1/jsEcho/js"/>
        </log>
        <payloadFactory media-type="json">
            <format>//tealium universal tag - utag.sync ut4.0.201604181647, Copyright 2016 Tealium.com Inc. All Rights Reserved.</format>
            <args></args>
        </payloadFactory>
        <property name="messageType" value="application/json" scope="axis2" type="STRING"/>
        <loopback/>
    </inSequence>
    <outSequence>
        <log>
            <property name="*** OUT" value="[API] /test/v1/jsEcho/js"/>
        </log>
        <property name="messageType" value="text/javascript" scope="axis2" type="STRING"/>
        <send/>
    </outSequence>
    <faultSequence></faultSequence>
</resource>

//tealium通用标签-utag.sync ut4.0.201604181647,版权所有2016 tealium.com Inc.保留所有权利。


有什么办法吗?

因为这是一个有趣的问题,我试了一下。好消息是,我能够完成它

下面是我的api配置

<api xmlns="http://ws.apache.org/ns/synapse" name="Stack" context="/stack">
   <resource methods="GET" url-mapping="/js">
      <inSequence>
         <payloadFactory media-type="xml">
            <format>
               <ms11:text xmlns:ms11="http://ws.apache.org/commons/ns/payload"><![CDATA[//tealium universal tag - utag.sync ut4.0.201604181647, Copyright 2016 Tealium.com Inc. All Rights Reserved.]]></ms11:text>
            </format>
            <args/>
         </payloadFactory>
        <property name="messageType" value="text/javascript" scope="axis2"/>
         <respond/>
         <drop/>
      </inSequence>
   </resource>
</api>

  • 我使用了CDATA来封装您的javascript。它也可以在没有CDATA标记的情况下工作。如果javascript中存在xml非友好字符,则可以使用它
  • 我为text/javascript内容类型添加了纯文本格式化程序
  • 查看我对curl请求的响应

    curl -v -X GET http://localhost:8280/stack/js
    
    < HTTP/1.1 200 OK
    < Host: localhost:8280
    < Content-Type: text/javascript; charset=UTF-8
    < Accept: */*
    < Date: Mon, 13 Jun 2016 16:52:36 GMT
    < Transfer-Encoding: chunked
    < 
    * Connection #0 to host localhost left intact
    //tealium universal tag - utag.sync ut4.0.201604181647, Copyright 2016 Tealium.com Inc. All Rights Reserved.
    
    curl-v-xgethttp://localhost:8280/stack/js