HttpInvoker задыхается при попытке вернуть список из 1000 элементов - PullRequest
1 голос
/ 13 марта 2012

Я написал небольшой класс обслуживания, который возвращает список из 1000 строк. Я использую Spring Httpinvoker, чтобы получить услугу и прочитать список. Если количество элементов в списке равно 100, все идет хорошо, когда Я пытаюсь 1000 это заморозить, пока есть сброс подключения На стороне клиента класс JUnit 4 с Spring Runner на той же машине кстати, то же самое происходит с протоколом Hessian, использующим классы Spring Remoting. Они оба основаны на HTML, но это единственное соединение, которое я вижу, RMI и JMS RMI (через Spring Remoting) работают нормально с одним и тем же сервисом Код услуги

public class DateServiceImpl implements DateService {


/* (non-Javadoc)
 * @see com.successcharging.rmiexample.DateService#getDate()
 */
@Override
public Date getDate() {
    return new Date();
}

@Override
public List<String> getBigList() {
    List<String> listData = new ArrayList<String>();
    for (int i = 0 ; i < 100;i++) {
        listData.add(Math.random()+"");
    }
    return listData;
}

}

Сервер сопоставления

<!-- The service to use this is the server side -->
<bean id="dateServiceServer"     class="com.successcharging.rmiexample.server.DateServiceImpl" />
<!-- the http invoker protocol -->
<bean name="/DateServiceHttpInvoker"
    class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">
    <property name="service" ref="dateServiceServer" />
    <property name="serviceInterface"
        value="com.successcharging.rmiexample.server.DateService" />
</bean>

Отображение клиента

код джунта

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class DateServiceTest extends BaseTest {

@Resource
private DateService dateServiceHttpInvokerClient;


@Test
public void testDateServiceHttpInvoker() {
    List<String> data = dateServiceHttpInvokerClient.getBigList(); //Here it is get stuck
    data.add("My test");
    System.out.println("HttpInvoker:"
            + data.size());
}

public DateService getDateServiceHttpInvokerClient() {
    return dateServiceHttpInvokerClient;
}

public void setDateServiceHttpInvokerClient(
        DateService dateServiceHttpInvoker) {
    this.dateServiceHttpInvokerClient = dateServiceHttpInvoker;
}
}

Есть идеи?

...