Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Spring & DWR. Общие вопросы 
:(
    Опции темы
Старовъръ
Дата 13.6.2009, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 8.5.2008

Репутация: 1
Всего: 10



Было SpringMVC приложение. Возникла необходимость добавить AJAX-функционал. Насколько я понял, DWR - одно из лучших решений.
Я добавил в web.xml
Код
    <servlet>
        <servlet-name>dwr</servlet-name>
        <servlet-class>org.directwebremoting.spring.DwrSpringServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>true</param-value>
        </init-param>
    </servlet>
<servlet-mapping>
        <servlet-name>dwr</servlet-name>
        <url-pattern>*.dwr</url-pattern>
    </servlet-mapping>
Создал я applicationContext-dwr.xml, который прописал в contextConfigLocation в том же web.xml.
Правильно ли я это организовую? Будет ли работать такая структура? Не будут ли обычные запросы мешать dwr-запросам?

Это сообщение отредактировал(а) Старовъръ - 13.6.2009, 18:32
PM MAIL WWW   Вверх
ecologist
Дата 14.6.2009, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 452
Регистрация: 28.2.2007

Репутация: 5
Всего: 9



А dwr.xml ты написал ?
PM MAIL   Вверх
Старовъръ
Дата 14.6.2009, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 8.5.2008

Репутация: 1
Всего: 10



Эээ.. нет... В тех примерах, что я смотрел, не было его вроде.. Можешь сюда выложить из своего проекта пример? 
А также место, где его прописывать? Или его в том же contextConfigLocation?

Это сообщение отредактировал(а) Старовъръ - 14.6.2009, 14:16
PM MAIL WWW   Вверх
MisterCleric
Дата 15.6.2009, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

Репутация: 33
Всего: 38



надо вот так:
web.xml
Код

  <servlet>
        <servlet-name>dwr</servlet-name>
        <servlet-class>org.directwebremoting.spring.DwrSpringServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <param-name>exposeInternals</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>scriptCompressed</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>initApplicationScopeCreatorsAtStartup</param-name>
            <param-value>true</param-value>
        </init-param>

        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>dwr</servlet-name>
        <url-pattern>/dwr/*</url-pattern>
    </servlet-mapping>


А в applicationContext-dwr.xml должен быть типа такого конфиг:
Код

<beans:beans xmlns="http://www.directwebremoting.org/schema/spring-dwr"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:beans="http://www.springframework.org/schema/beans"
             xmlns:aop="http://www.springframework.org/schema/aop"
             xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.directwebremoting.org/schema/spring-dwr http://www.directwebremoting.org/schema/spring-dwr-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
<beans:bean class="mycompany.web.spring.AuthorizationPinger">
        <remote javascript="Authorization"/>
        <aop:scoped-proxy/>
    </beans:bean>
  <configuration>
        <create type="new" javascript="validator" class="com.opensymphony.webwork.validators.DWRValidator"/>

        <create type="new" javascript="dwraction" class="org.directwebremoting.webwork.DWRAction"/>
          
        <convert type="bean" class="com.opensymphony.xwork.ValidationAwareSupport"/>

        <convert type="bean" class="org.directwebremoting.webwork.ActionDefinition"/>

        <convert type="bean" class="org.directwebremoting.webwork.AjaxResult"/>
        <convert type="bean" class="com.opensymphony.xwork.ActionSupport"/>

        <convert type="bean" class="com.cs.lisa.web.fileupload.UploadInfo"/>


        <signatures>
            <![CDATA[
        import java.util.Map;
        import com.opensymphony.webwork.validators.DWRValidator;
        import org.directwebremoting.webwork.ActionDefinition;
        import org.directwebremoting.webwork.DWRAction;
        import javax.servlet.http.HttpServletRequest;
        import javax.servlet.http.HttpServletResponse;
        import javax.servlet.ServletContext;

        DWRValidator.doPost(String, String, Map<String, String>);
        DWRAction.execute(ActionDefinition, Map<String, String>, HttpServletRequest, HttpServletResponse, ServletContext);
        ]]>
        </signatures>
    </configuration>

</beans:beans>


Ну это я привел свой конфиг, но у тебя должны быть свои определения для того, что бы ты мог пользоваться в своем приложении AJAX от DWR


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
Старовъръ
Дата 15.6.2009, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 8.5.2008

Репутация: 1
Всего: 10



Брр... что-то совсем туго( Можно тогда уже и ажакс-часть на клиенте? Не пойму чем является значение атрибута remote...
PM MAIL WWW   Вверх
MisterCleric
Дата 15.6.2009, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

Репутация: 33
Всего: 38



Цитата

Не пойму чем является значение атрибута remote... 


Код

<remote javascript="Authorization"/>


А это как раз тот виртуальный js-файл который сгенерит DWR
Цитата

Можно тогда уже и ажакс-часть на клиенте


вот так на клиенте
Код

<script language="JavaScript" type="text/javascript"
        src='<%=<%=request.getContextPath()%>/dwr/interface/Authorization.js'></script>



--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
Старовъръ
Дата 15.6.2009, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 8.5.2008

Репутация: 1
Всего: 10



Хех, я изначально неправильно понял технологию DWR! Нужно читать сначала теорию, а потом только за практику браться %) Теперь все стало на свои места, большое спасибо, буду читать документацию с оф. сайта smile
PM MAIL WWW   Вверх
Старовъръ
Дата 17.6.2009, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 8.5.2008

Репутация: 1
Всего: 10



Сделал так:
Код
<!DOCTYPE dwr PUBLIC
        "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
        "http://getahead.org/dwr/dwr20.dtd">
<dwr>
    <allow>
        <create creator="spring" javascript="ajaxGameController">
            <param name="beanName" value="ajaxGameController"/>            
            <param name="location" value="beans.xml"/>
        </create>
    </allow>
</dwr>
В bean.xml есть бин с id="ajaxGameController":
Код
    <bean id="ajaxGameController"
          class="ru.javatalks.jtchess.web.controller.ajax.AjaxGameController">
        <property name="gameController" ref="gameController"/>
    </bean>
Когда перехожу по ссылке /dwr/ - ни одного класса из доступных не показывает... В чем проблема?
PM MAIL WWW   Вверх
MisterCleric
Дата 17.6.2009, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

Репутация: 33
Всего: 38



что пишет на странице? Что в логах?


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
Старовъръ
Дата 17.6.2009, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 8.5.2008

Репутация: 1
Всего: 10



На странице пишет:
Цитата
Classes known to DWR:
и ни одного класса нет(
Если заходить на dwr/interface/, то пишет:
Цитата
Script names may only contain Java Identifiers 
Кстати, а что здесь должно писаться?
PM MAIL WWW   Вверх
MisterCleric
Дата 17.6.2009, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

Репутация: 33
Всего: 38



как замэплен сервлет dwr
ну строчки из web.xml


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
Старовъръ
Дата 17.6.2009, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 8.5.2008

Репутация: 1
Всего: 10



Если делаю так:
Код
        <create creator="new" javascript="JDate">
            <param name="class" value="java.util.Date"/>
        </create>
То на /dwr/index отображается JDate (java.util.Date)

Добавлено через 34 секунды
Это значит, что проблема именно в связке со Спрингом...
PM MAIL WWW   Вверх
MisterCleric
Дата 17.6.2009, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

Репутация: 33
Всего: 38



так, у меня
показывает нормально:

Classes known to DWR:

    * validator (com.opensymphony.webwork.validators.DWRValidator)
    * Authorization (mycompany.web.spring.AuthorizationPinger)
    * UploadMonitor (mycompany.web.fileupload.UploadMonitor)
    * dwraction (org.directwebremoting.webwork.DWRAction)

Что собственно надо сделать? В чем задача? А то ты уже наразмножал тем по этому поводу: то не получается, это...
Может надо исходить от первоначальной бизнес-задачи. Вроде как бы уже ж писал, что получилось.

Собственно, я на эти вот 
Цитата

Classes known to DWR


смотрю как на компоненты удаленных сервисов. Я их замепил в Spring провел тот, который мне нужен DI. Сказалу DWR сделать их RemoteProxy ну собственно и усе - зову себе со страницы javascript этих сервисов и усе. Зачем куда-то какой-то там меппинг? Все запросы на сервер через эти javascript идут через контекст /dwr
Зачем на него меппиться, если и так есть сервлет, которой все это перехватывает: DwrServlet и делает то, что его попросили - делегирует вызовы в те Java-сервисы, на которые замепплины эти javascript-интерфейсы. Может тебе не меппинг на УРЛы нужен. а AOP навернуть на методы этих сервисов? @Aspect какой-нибудь...


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
Старовъръ
Дата 17.6.2009, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 8.5.2008

Репутация: 1
Всего: 10



Просто хотел создать бин в одном файле, а в ДВР лишь ссылку на него поместить..
PM MAIL WWW   Вверх
MisterCleric
Дата 17.6.2009, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

Репутация: 33
Всего: 38



Ты который сервлет используешь?

Код

<servlet>
        <servlet-name>dwr</servlet-name>
        <servlet-class>org.directwebremoting.spring.DwrSpringServlet</servlet-class>
        <!--<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>-->


Если ты создал dwr.xml то нужен второй


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
Старовъръ
Дата 17.6.2009, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 8.5.2008

Репутация: 1
Всего: 10



Угу, второй..
PM MAIL WWW   Вверх
kez
Дата 23.7.2009, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 17.6.2009

Репутация: нет
Всего: нет



решил не плодить тем. внедряю dwr в spring mvc
web.xml
Код

<servlet>
    <servlet-name>dwr</servlet-name>
    <servlet-class>org.directwebremoting.spring.DwrSpringServlet</servlet-class>
    <init-param>
        <param-name>debug</param-name>
        <param-value>true</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>dwr</servlet-name>
    <url-pattern>/dwr/*</url-pattern>
</servlet-mapping>

бин
Код

public class ContractDwr {
    public String test() {
        return "test";
    }
}

action-servlet-dwr.xml
Код

<beans:beans xmlns="http://www.directwebremoting.org/schema/spring-dwr"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:beans="http://www.springframework.org/schema/beans"
             xmlns:aop="http://www.springframework.org/schema/aop"
             xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.directwebremoting.org/schema/spring-dwr http://www.directwebremoting.org/schema/spring-dwr-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">

    <beans:bean class="dwr.ContractDwr">
        <remote javascript="ContractDwr" />
        <aop:scoped-proxy/>
    </beans:bean>
    
    <configuration />
</beans:beans>

на jsp
Код

<script type='text/javascript' src='/cms/dwr/interface/ContractDwr.js'></script>
<script type='text/javascript' src='/cms/dwr/engine.js'></script>

вызов удаленной функции
Код

alert(ContractDwr.test());


при входе в дебаг, класс видно в списке, видно его метод test(), замечательно отрабатывает. Но при вызове из яваскрипта ContractDwr.test() возвращается undefined

что я упустил?
PM MAIL   Вверх
Старовъръ
Дата 23.7.2009, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 8.5.2008

Репутация: 1
Всего: 10



Функция не может просто так вернуть значение. Для этого последним аргументом в нее передается callback-функция. Документацию по этому поводу можно найти здесь.
PM MAIL WWW   Вверх
kez
Дата 24.7.2009, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 17.6.2009

Репутация: нет
Всего: нет



Старовъръ, большое спасибо! странно что я это упустил.
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0611 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.