2

Spring 3.2 で RestTemplate を使用してオブジェクトを POST しようとすると、平均応答時間が 8 秒になりました

カールの使用

time curl -X POST -H "Content-Type: application/xml" -T request.xml https://x.y.com:20000/rest

私は約4秒の平均時間を取得しています。理由がわかりません。

私の構成:

<bean id="jaxb2Marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
        <property name="classesToBeBound">
            <list>
                <value>x.y.z.Request</value>
                <value>x.y.z.Response</value>
                <value>x.y.z.AnotherRequest</value>
                <value>x.y.z.AnotherResponse</value>
            </list>
        </property>
    </bean>


<bean id="restTemplate" class="org.springframework.web.client.RestTemplate"
        scope="prototype">
        <constructor-arg>
            <bean
                class="org.springframework.http.client.HttpComponentsClientHttpRequestFactory">
                <property name="readTimeout" value="${application.urlReadTimeout}" />
                <property name="connectTimeout" value="${application.urlConnectionTimeout}" />
            </bean>
        </constructor-arg>

        <property name="messageConverters">
            <list>
                <bean
                    class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter">
                    <property name="marshaller" ref="jaxb2Marshaller" />
                    <property name="unmarshaller" ref="jaxb2Marshaller" />
                </bean>
                <bean class="org.springframework.http.converter.FormHttpMessageConverter" />
                <bean
                    class="org.springframework.http.converter.StringHttpMessageConverter" />
            </list>
        </property>
    </bean>

次に、単純に自動配線します。

    @Autowired
    RestTemplate restTemplate;

public Response getXml(Request request){

    Response response = restTemplate.postForObject(httpUrl,request, Response.class);
}

PS: 別の方法として、JaxB を使用して Request/Response オブジェクトを解析しようとしましたorg.apache.http.client.HttpClientが、平均時間を使用して送信すると、約 7 秒かかりました。これは良いとは言えません。

4

1 に答える 1

1

ipv4/6 の問題である可能性があります。試す

curl -4 -X POST -H "Content-Type: application/xml" -T request.xml https://x.y.com:20000/rest

うまくいく場合は、paramを使用してJavaコマンドを実行します

-Djava.net.preferIPv4Stack=true
于 2013-06-24T14:36:25.723 に答える