Как заставить spring4gwt экспортировать более 1 сервиса? - PullRequest
0 голосов
/ 20 июля 2010

Я успешно следую инструкциям GWT и spring4gwt и преобразую демонстрацию StockWatcher в сервис с поддержкой Spring (3.0) с помощью следующих конфигураций:

web.xml:

  <servlet-mapping>
    <servlet-name>springGwtRemoteServiceServlet</servlet-name>
    <!-- stockWatcher module is rename-to="stock" -->
    <url-pattern>/stock/spring/*</url-pattern> 
  </servlet-mapping>

StockPriceService.java:

@RemoteServiceRelativePath("spring/stockPriceService")
public interface StockPriceService extends RemoteService
{
  StockPrice[] getPrices(String[] symbols) throws DelistedException;
}

весенний app.xml:

<bean id="stockPriceService" class="destiny.gwt.stock.server.StockPriceServiceImpl"/>

Затем я хочу добавить еще один сервис: Chatroom.gwt.xml (rename-to = "chatroom") и надеюсь, что эти два сервиса могут быть объединены в одном веб-приложении и обслуживаться одним экземпляром spring4gwt.

Это мой ChatService.java:

@RemoteServiceRelativePath("spring/chatService")
public interface ChatService extends RemoteService
{
  public boolean login(String username , String password);
}

app.xml весны:

  <bean id="chatService"       class="destiny.gwt.chatroom.server.ChatServiceImpl"/>
  <bean id="stockPriceService" class="destiny.gwt.stock.server.StockPriceServiceImpl"/>

Что касается web.xml:

  <servlet-mapping>
    <servlet-name>springGwtRemoteServiceServlet</servlet-name>
    <url-pattern>/stock/spring/*</url-pattern>
  </servlet-mapping>

Вот и проблема! Я не знаю, как написать правильный шаблон URL, чтобы SpringGwtRemoteServiceServlet мог одновременно слушать / stock / spring / * и / chatroom / spring / *?

Модуль StockWatcher переименован в = "stock", поэтому каждый POST-запрос будет публиковаться в URI "/ stock / ...". Модуль чата переименован в "chatroom", и каждый POST будет публиковать в URI "/ chatroom / ...". Я пытался написать /*/spring/*, но зря оба не работают ...

Ответы [ 2 ]

2 голосов
/ 22 ноября 2011

Выражение /*/spring/* не является допустимым путем для весны. Вместо того, чтобы пытаться использовать подстановочный знак (*), вы можете явно установить другое сопоставление:

<servlet-mapping>
  <servlet-name>springGwtRemoteServiceServlet</servlet-name>
  <url-pattern>/stock/spring/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
  <servlet-name>springGwtRemoteServiceServlet</servlet-name>
  <url-pattern>/chatroom/spring/*</url-pattern>
</servlet-mapping>
1 голос
/ 10 декабря 2010

Попробуйте это:

<servlet-mapping>
    <servlet-name>springGwtRemoteServiceServlet</servlet-name>
    <url-pattern>/spring/*</url-pattern>
  </servlet-mapping>

А потом:

@RemoteServiceRelativePath("../spring/chatService")
...