Перенос весеннего приложения из Glassfish в Tomcat - PullRequest
1 голос
/ 23 марта 2012

Я работал над веб-приложением Spring 3.0, используя сервер Netbeans и Glassfish. Сейчас я нахожусь в точке, где я должен развернуть приложение для публичного использования, однако при попытке перейти от Glassfish к Tomcat я сталкиваюсь с ошибкой. Мое приложение использует AJAX для получения информации из URL-адреса в приложении, но когда я запрашиваю URL-адрес, я получаю следующее:

Ресурс, указанный в этом запросе, способен генерировать ответы только с характеристиками, которые не являются приемлемыми в соответствии с заголовком запроса «принять» ().

Мой контроллер для запрашиваемой информации выглядит так:

@RequestMapping(value = "/electricity/usage/")
public @ResponseBody List<UsageData> getEUsage(HttpSession session) {

    UsageDataDAO UsageDAO = new UsageDataDAO();

    User u = (User) session.getAttribute("user");

    List<UsageData> l = UsageDAO.getAllUsageData(u.getAccountNum(), 'e');

     return l;
}

Почему это происходит, когда я перехожу на Tomcat?

1 Ответ

0 голосов
/ 23 марта 2012

Эта ошибка возникает из-за того, что то, что ваш браузер отправляет на сервер в заголовке «Принять», не совпадает с тем, что сервер может получить по URL / электричество / использование /

Если вы используете библиотеку, такую ​​как jQuery( и НЕ выполняет междоменных запросов , это важно), тогда ваш браузер отправит этот заголовок подтверждения:

Accept: application / json

Вы получаете эту ошибку, значитчто сервер не считает, что URL / electicity / Использование может вернуть JSON-ответ.Это настраивается в вашем файле webmvc-config.xml .Вот что я имею в виду в связи с запросами JSON:

<!-- allows rendering responses in XML and JSON formats -->
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver" p:order="1">
    <property name="mediaTypes">
        <map>
            <entry key="xml" value="application/xml"/>
            <entry key="json" value="application/json"/>
        </map>
    </property>
    <property name="defaultViews">
        <list>
            <bean class="org.springframework.web.servlet.view.xml.MarshallingView">
                <property name="marshaller">
                    <bean class="org.springframework.oxm.xstream.XStreamMarshaller" p:autodetectAnnotations="true"/>
                </property>
            </bean>
            <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"/>
        </list>
    </property>
</bean>

См. Это руководство для реализации ответов JSON в Spring MVC: http://rwehner.wordpress.com/2010/06/09/2-ways-to-create-json-response-for-ajax-request-in-spring3/

Почему этот код работает на Glassfish, но неTomcat - это хороший вопрос ...

Если вы выполняете междоменный запрос, то эта тема применима: getJSON () JQuery не правильно устанавливает заголовок Accept?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...