Могу ли я использовать удаленный объект в flex для опроса класса Java на сервере (Blazeds)? Я хочу вернуть оперативную информацию в свою сетку данных

Итак, вот код, который у меня есть до сих пор:

Гибкий код

<?xml version="1.0" encoding="utf-8"?>

<fx:Declarations>


    <s:RemoteObject id="getStockPrices" result="result(event)" destination="blazeDsService"
                    endpoint="http://localhost:8400/flexspring/messagebroker/streamingamf"/>

</fx:Declarations>


<mx:DataGrid  x="10" y="295" width="910" height="211" creationComplete="getStockPrices.getQuotes();"
             dataProvider="{getStockPrices.getQuotes.lastResult}" >
    <mx:columns>
        <mx:DataGridColumn headerText="Stock Ticker" dataField="name" />
        <mx:DataGridColumn headerText="Price" dataField="price"/>
        <mx:DataGridColumn headerText="Hi" dataField="col3"/>
        <mx:DataGridColumn headerText="Low" dataField="col4"/>
        <!--<mx:DataGridColumn headerText="Adverage" dataField="col5"/>
        <mx:DataGridColumn headerText="Graph" dataField="col6"/>-->
    </mx:columns>
</mx:DataGrid>


<mx:Button label="Retrieve Stocks" click="retrieveStocks()"/>

И это файл класса java. Это возвращает и arraylist:

package flex;

импортировать java.util.ArrayList; импортировать java.util.List; импортировать java.util.Random;

импортировать org.springframework.flex.remoting.RemotingDestination; импортировать org.springframework.flex.remoting.RemotingInclude; импортировать org.springframework.stereotype.Service;

импортировать supportClasses.StockQuote;

@Обслуживание

@RemotingDestination

открытый класс BlazeDsService {

private static final String[] MASTER_LIST = {"C", "FNM", "FRE", "F", "GOOG", "AIG", "CSCO", "MSFT", "AAPL", "YHOO", "BSX", "PORT","F", "TNT", "ESP", "RET", "VBN", "EES"};


@RemotingInclude
public List<StockQuote> getQuotes(){
    List<StockQuote> list = new ArrayList<StockQuote>();
    Random r = new Random();
    for (String s:MASTER_LIST){
        StockQuote sq = new StockQuote();
        sq.setName(s);
        sq.setPrice(r.nextInt(50));
        list.add(sq);
    }
    return list;
}

}

В минуту нужно нажать кнопку, чтобы обновить данные. Я хочу избавиться от этого и опрашивать информацию каждые x секунд. Можно ли это сделать?

Нужно ли мне менять настройки? создать шаблон публикации-подписки и использовать потоковые каналы?

Спасибо


person Michael W    schedule 09.12.2010    source источник


Ответы (1)


Если вы просто хотите вызывать метод getQuotes каждые X секунд, вы можете использовать таймер во Flex, и нет необходимости в обмене сообщениями. Если вы хотите получать уведомления об изменении стоимости акций, вы можете использовать потребителя на гибкой стороне, который подписан на тот же пункт назначения, где сервер добавляет сообщения. Вы можете найти образец, делающий именно это, в папке образцов BlazeDS в папке traderdesktop.

person Cornel Creanga    schedule 09.12.2010
comment
Проблема, с которой я столкнулся с готовыми образцами, заключается в том, что они находятся в файле WAR. как только вы извлечете это, все образцы будут в формате swf. то есть уже выполнено. Как я могу запустить их в eclipse, где я могу видеть исходный код как сервера, так и клиента. Если бы я мог видеть обе стороны кода, я думаю, это ответило бы на многие мои вопросы и очень помогло бы. Спасибо за помощь (еще раз!) - person Michael W; 09.12.2010
comment
Метод таймера работает хорошо, но мне бы очень хотелось, чтобы эти образцы работали. - person Michael W; 09.12.2010
comment
вы можете найти исходный код для flex и java в следующих местах:\your_blaze_archive\tomcat\webapps\samples\web-inf\flex-src и \your_blaze_archive\tomcat\webapps\samples\web-inf\src .Not конечно, почему такая структура папок в любом случае. - person Cornel Creanga; 09.12.2010