Простое приложение на Spring

Теперь попробую показать на простейшем примере Web-приложения что такое Spring. Для простоты сделаем калькулятор, который лишь умеет складывать два числа 🙂

Под катом всякий код и коментарии, лишь для тех кто не видел спринга.

Для начала создадим /WEB-INF/web.xml такого вида:

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

<web-app version="2.4"
         xmlns="http://java.sun.com/xml/ns/j2ee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >

   <servlet>
        <servlet-name>springServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring.xml</param-value>
        </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>springServlet</servlet-name>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>
</web-app>

вот этот вот springServlet и отвечает за весь спринг. В данном случае мы его связали с урлами *.html, но никто не мешает добавить также

<servlet-mapping>
        <servlet-name>springServlet</servlet-name>
        <url-pattern>*.xml</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>springServlet</servlet-name>
        <url-pattern>*.jpg</url-pattern>
    </servlet-mapping>

и пр. что душе угодно.

Главное это параметр инициализации contextConfigLocation. В нем содержится путь к конфигурационному файлу спринга.
До него мы еще дойдем, а сейчас попробуем написать наш контроллер и jsp отображения результата.

Контроллер должен наследовать класс org.springframework.web.servlet.mvc.AbstractController
Для нашего примера это будет чтото вроде такого:
SumController.java

public class SumController extends AbstractController {
    protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
        ModelAndView mav = new ModelAndView("/calc.jsp");
        try {
            int x = Integer.parseInt(request.getParameter("x"));
            int y = Integer.parseInt(request.getParameter("y"));
            int sum = x + y;
            mav.addObject("sum", sum);
            mav.addObject("x", x);
            mav.addObject("y", y);
        } catch (NumberFormatException e) {
            e.printStackTrace();
        }
        return mav;
    }
}

метод handleRequestInternal (request, response) отвечает за обработку запроса. На выходе он выдает ModelAndView, это класс содержащий информацию об отображении (View) и данные для нее (Model). В данном случае View это страница /calc.jsp"", которая сможет брать из атрибутов запроса параметры «x», «y» и «sum». Вообще, если говорит до конца, то /calc.jsp"" это совсем не обязательно файл /calc.jsp, за то, какой будет конечный файл, отвечает viewResolver, который настраивается в конфиге спринга. Но это позже.
А Model в данном случа хранит наши цифры, ну и в общемто можно положить любые объекты, которые надо обработать в JSP. В обработчике можно не возвращать объект ModelAndView, можно вернуть null, и сделать всю работу по выдаче данных самому, через response.getOutputStream () и т.д., что тоже иногда полезно.

Теперь напишем наш calc.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>Summer</title>
  </head>
  <body>
    <form>
        <input type="text" name="x" value="${x}"/>
        +
        <input type="text" name="y" value="${y}"/>
        = ${sum}
        <br/>
        <input type="submit" value="Calc"/>
    </form>
  </body>
</html>

Ну тут как обычно все, без комментариев.

Осталось все это связать через конфиг спринга. Сделаем такой WEB-INF/spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

    <bean id="Calc" class="example.simplespring.ctrl.SumController" >
    </bean>

    <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="/calc.html">Calc</prop>
            </props>
        </property>
    </bean>
</beans>

В общемто это все, можно сохранять, компилировать, и пробовать URL /calc.html

А я теперь подробней объясню что это было 🙂
Конфиг содержит список бинов. Это не те которые EJB, а обычные JavaBean, т.е. объекты с геттерами, сеттерами, и пустым конструктором. Пустой конструктор для Спринга даже не обязательно.
По примеру, наверное, понятно что мы делаем элемент <bean> с атрибутами:

  • id — идентификатор для текущего конфига
  • class — собственно сам класс
  • singleton — true/false. Если не указать, то значение равно true, т.е. всем остальным будет передан один и тотже экземпляр.
  • init-method — имя метода, который вызовется после заполнения всех пропертей, но до запуска самого приложения. Это в случае если объект требует какойто инициализации.
  • пр. атрибуты, которые для начала не так важны, если что, то потом о них подробней.

Внутри элемента можем настроить этот объект, точне заполнить его проперти нужными нам значениями. Для этого есть элемент <property> с атрибутом name содержащим название. Название это имя сеттера, без set и с маленькой буквы. т.е. для setFontSize (size) это будет просто fontSize. Вторым атрибутом должен быть или атрибут value, в случае если мы напрямую указываем значение (текстовое или числовое), или ref содержащий id другого объекта.
<property> имеет несколько подэлементов, которые служат для заполнения более сложных структур. Вот, например, для urlMapping таким образом заполняется mappings, заполняется как Properties (это элемент <props>). Есть также <list> для списков, <map>, <set>, <null> и пр.
Для объекта Calc нам правда нечего настраивать.
Для объекта маппинга мы передаем список Properties, содержащий url для мапинга в качестве ключа и id объекта как значение.

Для такого простого примера чтото очень громоздко получилось 🙂

  • http:// Aries

    Да пробовал я уже через /*, все так же.

    Работаю через websphere, а не томкат. Но сути не меняет, приложение точно запущено.

    Я вот думаю, никаких доп настроек websphere не надо делать?

  • http:// splix

    Ну я подозреваю что внутри вебсферы все равно томкат будет. Так что сути не меняет, да 🙂 (кстати, а зачем спринг если все равно вебсфера? точнее наоборот, зачем в спринговом приложении вебсфера?)

    Тогда так: если включить в log4j логе DEBUG режим для org.springframework то что в логе повится?

  • http:// Aries

    Такс...Пересоздавал проект, даж не добавляя log4j, в логах увидел следующее

    [17.08.10 11:15:11:500 MSD] 00000449 ServletWrappe E [Servlet Error]-[org.springframework.web.servlet.DispatcherServlet]: java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet

    at com.ibm.ws.classloader.CompoundClassLoader.findClass (CompoundClassLoader.java:472)

    at com.ibm.ws.classloader.CompoundClassLoader.loadClass (CompoundClassLoader.java:373)

    at java.lang.ClassLoader.loadClass (ClassLoader.java:561)

    at java.beans.Beans.instantiate (Beans.java:202)

    at java.beans.Beans.instantiate (Beans.java:63)

    at com.ibm.ws.webcontainer.servlet.ServletWrapper$1.run (ServletWrapper.java:1195)

    at com.ibm.ws.security.util.AccessController.doPrivileged (AccessController.java:118)

    at com.ibm.ws.webcontainer.servlet.ServletWrapper.loadServlet (ServletWrapper.java:1190)

    at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.loadServlet (ServletWrapper.java:385)

    at com.ibm.ws.webcontainer.servlet.ServletWrapper.initialize (ServletWrapper.java:1112)

    at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.initialize (ServletWrapper.java:149)

    at com.ibm.wsspi.webcontainer.extension.WebExtensionProcessor.createServletWrapper (WebExtensionProcessor.java:99)

    at com.ibm.ws.webcontainer.webapp.WebApp.getServletWrapper (WebApp.java:741)

    at com.ibm.ws.webcontainer.webapp.WebApp.initializeTargetMappings (WebApp.java:421)

    at com.ibm.ws.webcontainer.webapp.WebApp.commonInitializationFinish (WebApp.java:274)

    at com.ibm.ws.wswebcontainer.webapp.WebApp.initialize (WebApp.java:271)

    at com.ibm.ws.wswebcontainer.webapp.WebGroup.addWebApplication (WebGroup.java:88)

    at com.ibm.ws.wswebcontainer.VirtualHost.addWebApplication (VirtualHost.java:157)

    at com.ibm.ws.wswebcontainer.WebContainer.addWebApp (WebContainer.java:653)

    at com.ibm.ws.wswebcontainer.WebContainer.addWebApplication (WebContainer.java:606)

    at com.ibm.ws.webcontainer.component.WebContainerImpl.install (WebContainerImpl.java:333)

    at com.ibm.ws.webcontainer.component.WebContainerImpl.start (WebContainerImpl.java:549)

    at com.ibm.ws.runtime.component.ApplicationMgrImpl.start (ApplicationMgrImpl.java:1295)

    at com.ibm.ws.runtime.component.DeployedApplicationImpl.fireDeployedObjectStart (DeployedApplicationImpl.java:1129)

    at com.ibm.ws.runtime.component.DeployedModuleImpl.start (DeployedModuleImpl.java:567)

    at com.ibm.ws.runtime.component.ApplicationMgrImpl.startModule (ApplicationMgrImpl.java:1762)

    at com.ibm.ws.runtime.component.ApplicationMgrImpl._startModule (ApplicationMgrImpl.java:1710)

    at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)

    at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:64)

    at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)

    at java.lang.reflect.Method.invoke (Method.java:615)

    at sun.reflect.misc.Trampoline.invoke (MethodUtil.java:62)

    at sun.reflect.GeneratedMethodAccessor19.invoke (Unknown Source)

    at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)

    at java.lang.reflect.Method.invoke (Method.java:615)

    at sun.reflect.misc.MethodUtil.invoke (MethodUtil.java:265)

    at javax.management.modelmbean.RequiredModelMBean.invokeMethod (RequiredModelMBean.java:1089)

    at javax.management.modelmbean.RequiredModelMBean.invoke (RequiredModelMBean.java:971)

    at com.sun.jmx.mbeanserver.DynamicMetaDataImpl.invoke (DynamicMetaDataImpl.java:231)

    at com.sun.jmx.mbeanserver.MetaDataImpl.invoke (MetaDataImpl.java:238)

    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke (DefaultMBeanServerInterceptor.java:833)

    at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke (JmxMBeanServer.java:802)

    at com.ibm.ws.management.AdminServiceImpl$1.run (AdminServiceImpl.java:1055)

    at com.ibm.ws.security.util.AccessController.doPrivileged (AccessController.java:118)

    at com.ibm.ws.management.AdminServiceImpl.invoke (AdminServiceImpl.java:948)

    at com.ibm.ws.management.application.sync.StartDeploymentTask.startDeployment (StartDeploymentTask.java:196)

    at com.ibm.ws.management.application.sync.StartDeploymentTask.fineGrainUpdate (StartDeploymentTask.java:149)

    at com.ibm.ws.management.application.sync.StartDeploymentTask.performTask (StartDeploymentTask.java:79)

    at com.ibm.ws.management.application.sync.AppBinaryProcessor$AppBinThread.run (AppBinaryProcessor.java:820)

    at com.ibm.ws.management.application.sync.AppBinaryProcessor.postProcess (AppBinaryProcessor.java:590)

    at com.ibm.ws.management.application.sync.AppBinaryProcessor._onChangeCompletion (AppBinaryProcessor.java:400)

    at com.ibm.ws.management.application.sync.AppBinaryProcessor$2.run (AppBinaryProcessor.java:372)

    at com.ibm.ws.security.util.AccessController.doPrivileged (AccessController.java:118)

    at com.ibm.ws.management.application.sync.AppBinaryProcessor.onChangeCompletion (AppBinaryProcessor.java:359)

    at com.ibm.ws.management.repository.FileRepository.postNotify (FileRepository.java:1715)

    at com.ibm.ws.management.repository.FileRepository.update (FileRepository.java:1261)

    at com.ibm.ws.management.repository.client.LocalConfigRepositoryClient.update (LocalConfigRepositoryClient.java:189)

    at com.ibm.ws.sm.workspace.impl.WorkSpaceMasterRepositoryAdapter.update (WorkSpaceMasterRepositoryAdapter.java:578)

    at com.ibm.ws.sm.workspace.impl.RepositoryContextImpl.update (RepositoryContextImpl.java:1778)

    at com.ibm.ws.sm.workspace.impl.RepositoryContextImpl.synch (RepositoryContextImpl.java:1724)

    at com.ibm.ws.sm.workspace.impl.WorkSpaceImpl.synch (WorkSpaceImpl.java:470)

    at com.ibm.ws.management.application.task.ConfigRepoHelper.removeWorkSpace (ConfigRepoHelper.java:144)

    at com.ibm.ws.management.application.SchedulerImpl.cleanup (SchedulerImpl.java:378)

    at com.ibm.ws.management.application.SchedulerImpl.run (SchedulerImpl.java:284)

    at java.lang.Thread.run (Thread.java:797)

  • http:// Aries

    Насколько понимаю, не видит он как раз

    org.springframework.web.servlet.DispatcherServlet

  • http:// Aries

    С этим уже разобрался.Терь призапускеприложения все норм...Но при обращении к нужной странице браузер выдает ошибку 500:веб узел не может отобразить страницу...

    а в логах появляется следующее

    [17.08.10 14:15:31:015 MSD] 0000002a ServletWrappe E SRVE0068E: Uncaught exception thrown in one of the service methods of the servlet: spring-ws. Exception thrown : javax.servlet.ServletException: No adapter for handler [test.SumController@57c457c4]: Does your handler implement a supported interface like Controller?

    at org.springframework.web.servlet.DispatcherServlet.getHandlerAdapter (DispatcherServlet.java:1091)

    at org.springframework.web.servlet.DispatcherServlet.doDispatch (DispatcherServlet.java:874)

    at org.springframework.web.servlet.DispatcherServlet.doService (DispatcherServlet.java:809)

    at org.springframework.web.servlet.FrameworkServlet.processRequest (FrameworkServlet.java:571)

    at org.springframework.web.servlet.FrameworkServlet.doGet (FrameworkServlet.java:501)

    at javax.servlet.http.HttpServlet.service (HttpServlet.java:743)

    at javax.servlet.http.HttpServlet.service (HttpServlet.java:856)

    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service (ServletWrapper.java:966)

    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest (ServletWrapper.java:478)

    at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest (ServletWrapper.java:463)

    at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest (WebApp.java:3107)

    at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest (WebGroup.java:238)

    at com.ibm.ws.webcontainer.WebContainer.handleRequest (WebContainer.java:811)

    at com.ibm.ws.wswebcontainer.WebContainer.handleRequest (WebContainer.java:1425)

    at com.ibm.ws.webcontainer.channel.WCChannelLink.ready (WCChannelLink.java:92)

    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination (HttpInboundLink.java:465)

    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation (HttpInboundLink.java:394)

    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready (HttpInboundLink.java:274)

    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators (NewConnectionInitialReadCallback.java:214)

    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete (NewConnectionInitialReadCallback.java:113)

    at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted (AioReadCompletionListener.java:152)

    at com.ibm.io.async.AbstractAsyncFuture.invokeCallback (AbstractAsyncFuture.java:213)

    at com.ibm.io.async.AbstractAsyncFuture.fireCompletionActions (AbstractAsyncFuture.java:195)

    at com.ibm.io.async.AsyncFuture.completed (AsyncFuture.java:136)

    at com.ibm.io.async.ResultHandler.complete (ResultHandler.java:193)

    at com.ibm.io.async.ResultHandler.runEventProcessingLoop (ResultHandler.java:725)

    at com.ibm.io.async.ResultHandler$2.run (ResultHandler.java:847)

    at com.ibm.ws.util.ThreadPool$Worker.run (ThreadPool.java:1498)

    [17.08.10 14:15:31:015 MSD] 0000002a WebApp E [Servlet Error]-[spring-ws]: javax.servlet.ServletException: No adapter for handler [test.SumController@57c457c4]: Does your handler implement a supported interface like Controller?

    at org.springframework.web.servlet.DispatcherServlet.getHandlerAdapter (DispatcherServlet.java:1091)

    at org.springframework.web.servlet.DispatcherServlet.doDispatch (DispatcherServlet.java:874)

    at org.springframework.web.servlet.DispatcherServlet.doService (DispatcherServlet.java:809)

    at org.springframework.web.servlet.FrameworkServlet.processRequest (FrameworkServlet.java:571)

    at org.springframework.web.servlet.FrameworkServlet.doGet (FrameworkServlet.java:501)

    at javax.servlet.http.HttpServlet.service (HttpServlet.java:743)

    at javax.servlet.http.HttpServlet.service (HttpServlet.java:856)

    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service (ServletWrapper.java:966)

    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest (ServletWrapper.java:478)

    at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest (ServletWrapper.java:463)

    at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest (WebApp.java:3107)

    at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest (WebGroup.java:238)

    at com.ibm.ws.webcontainer.WebContainer.handleRequest (WebContainer.java:811)

    at com.ibm.ws.wswebcontainer.WebContainer.handleRequest (WebContainer.java:1425)

    at com.ibm.ws.webcontainer.channel.WCChannelLink.ready (WCChannelLink.java:92)

    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination (HttpInboundLink.java:465)

    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation (HttpInboundLink.java:394)

    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready (HttpInboundLink.java:274)

    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators (NewConnectionInitialReadCallback.java:214)

    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete (NewConnectionInitialReadCallback.java:113)

    at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted (AioReadCompletionListener.java:152)

    at com.ibm.io.async.AbstractAsyncFuture.invokeCallback (AbstractAsyncFuture.java:213)

    at com.ibm.io.async.AbstractAsyncFuture.fireCompletionActions (AbstractAsyncFuture.java:195)

    at com.ibm.io.async.AsyncFuture.completed (AsyncFuture.java:136)

    at com.ibm.io.async.ResultHandler.complete (ResultHandler.java:193)

    at com.ibm.io.async.ResultHandler.runEventProcessingLoop (ResultHandler.java:725)

    at com.ibm.io.async.ResultHandler$2.run (ResultHandler.java:847)

    at com.ibm.ws.util.ThreadPool$Worker.run (ThreadPool.java:1498)

  • http:// splix

    А test.SumController он точно extends AbstractController?

  • http:// Aries

    Да.

    Я объяснял выше, что приложение отрабатывает норм, если, в web.xml сервлет описываю так:

    <servlet>

    <servlet-name>spring-ws</servlet-name>

    <servlet-class>test.SumController</servlet-class>

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

    </servlet>

    <servlet-mapping>

    <servlet-name>spring-ws</servlet-name>

    <url-pattern>*.html</url-pattern>

    </servlet-mapping>

    А если как в примере, то запускается оно норм — без ошибок. И только при обращении к нужной странице появляется ошибка в логах

  • http:// splix

    Если как сервлет работат то может у вас всетаки сервлет? Спрингу нужен контроллер. Еще раз: test.SumController он точно extends AbstractController?

  • http:// Aries

    Все... Эт мой косяк был...Все заработало)) спс всем)))

  • http:// Zest

    Всем доброго времени суток...

    Никто не подскажет, что означает следующая ошибка

    [23.08.10 17:30:51:625 MSD] 00000028 ServletWrappe E SRVE0100E: Did not realize init () exception thrown by servlet test-ws: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'test' defined in ServletContext resource [/WEB-INF/test-ws-servlet.xml]: Invocation of init method failed; nested exception is org.springframework.ws.wsdl.wsdl11.Wsdl4jDefinitionException: WSDLException: faultCode=CONFIGURATION_ERROR: No Java extensionType found to represent a '{http://www.w3.org/2001/XMLSchema}schema' element in the context of a 'javax.wsdl.Types'.; nested exception is WSDLException: faultCode=CONFIGURATION_ERROR: No Java extensionType found to represent a '{http://www.w3.org/2001/XMLSchema}schema' element in the context of a 'javax.wsdl.Types'.:

    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.java:1337)

    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:473)

    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run (AbstractAutowireCapableBeanFactory.java:409)

    at java.security.AccessController.doPrivileged (AccessController.java:214)

    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:380)

    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject (AbstractBeanFactory.java:264)

    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:221)

    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:261)

    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:185)

    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:164)

    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons (DefaultListableBeanFactory.java:429)

    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization (AbstractApplicationContext.java:729)

    at org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:381)

    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext (FrameworkServlet.java:402)

    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext (FrameworkServlet.java:316)

    at org.springframework.web.servlet.FrameworkServlet.initServletBean (FrameworkServlet.java:282)

    at org.springframework.web.servlet.HttpServletBean.init (HttpServletBean.java:126)

    at javax.servlet.GenericServlet.init (GenericServlet.java:256)

    at com.ibm.ws.webcontainer.servlet.ServletWrapper.init (ServletWrapper.java:185)

    at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.init (ServletWrapper.java:316)

    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest (ServletWrapper.java:341)

    at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest (ServletWrapper.java:463)

    at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest (WebApp.java:3107)

    at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest (WebGroup.java:238)

    at com.ibm.ws.webcontainer.WebContainer.handleRequest (WebContainer.java:811)

    at com.ibm.ws.wswebcontainer.WebContainer.handleRequest (WebContainer.java:1425)

    at com.ibm.ws.webcontainer.channel.WCChannelLink.ready (WCChannelLink.java:92)

    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination (HttpInboundLink.java:465)

    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation (HttpInboundLink.java:394)

    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready (HttpInboundLink.java:274)

    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators (NewConnectionInitialReadCallback.java:214)

    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete (NewConnectionInitialReadCallback.java:113)

    at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted (AioReadCompletionListener.java:152)

    at com.ibm.io.async.AbstractAsyncFuture.invokeCallback (AbstractAsyncFuture.java:213)

    at com.ibm.io.async.AbstractAsyncFuture.fireCompletionActions (AbstractAsyncFuture.java:195)

    at com.ibm.io.async.AsyncFuture.completed (AsyncFuture.java:136)

    at com.ibm.io.async.ResultHandler.complete (ResultHandler.java:193)

    at com.ibm.io.async.ResultHandler.runEventProcessingLoop (ResultHandler.java:725)

    at com.ibm.io.async.ResultHandler$2.run (ResultHandler.java:847)

    at com.ibm.ws.util.ThreadPool$Worker.run (ThreadPool.java:1498)

    Caused by: org.springframework.ws.wsdl.wsdl11.Wsdl4jDefinitionException: WSDLException: faultCode=CONFIGURATION_ERROR: No Java extensionType found to represent a '{http://www.w3.org/2001/XMLSchema}schema' element in the context of a 'javax.wsdl.Types'.; nested exception is WSDLException: faultCode=CONFIGURATION_ERROR: No Java extensionType found to represent a '{http://www.w3.org/2001/XMLSchema}schema' element in the context of a 'javax.wsdl.Types'.:

    at org.springframework.ws.wsdl.wsdl11.builder.AbstractWsdl4jDefinitionBuilder.buildTypes (AbstractWsdl4jDefinitionBuilder.java:101)

    at org.springframework.ws.wsdl.wsdl11.DynamicWsdl11Definition.afterPropertiesSet (DynamicWsdl11Definition.java:72)

    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods (AbstractAutowireCapableBeanFactory.java:1368)

    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.java:1334)

    ... 39 more

    Caused by: WSDLException: faultCode=CONFIGURATION_ERROR: No Java extensionType found to represent a '{http://www.w3.org/2001/XMLSchema}schema' element in the context of a 'javax.wsdl.Types'.:

    at javax.wsdl.extensions.ExtensionRegistry.createExtension (Unknown Source)

    at org.springframework.ws.wsdl.wsdl11.builder.AbstractWsdl4jDefinitionBuilder.createExtension (AbstractWsdl4jDefinitionBuilder.java:195)

    at org.springframework.ws.wsdl.wsdl11.builder.XsdBasedSoap11Wsdl4jDefinitionBuilder.buildTypes (XsdBasedSoap11Wsdl4jDefinitionBuilder.java:243)

    at org.springframework.ws.wsdl.wsdl11.builder.AbstractWsdl4jDefinitionBuilder.buildTypes (AbstractWsdl4jDefinitionBuilder.java:98)

    ... 42 more

    [23.08.10 17:30:51:718 MSD] 00000028 ServletWrappe E Deregister the mbean because of uncaught init () exception thrown by servlet test-ws: javax.servlet.ServletException: SRVE0207E: Uncaught initialization exception thrown by servlet

    at com.ibm.ws.webcontainer.servlet.ServletWrapper.init (ServletWrapper.java:237)

    at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.init (ServletWrapper.java:316)

    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest (ServletWrapper.java:341)

    at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest (ServletWrapper.java:463)

    at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest (WebApp.java:3107)

    at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest (WebGroup.java:238)

    at com.ibm.ws.webcontainer.WebContainer.handleRequest (WebContainer.java:811)

    at com.ibm.ws.wswebcontainer.WebContainer.handleRequest (WebContainer.java:1425)

    at com.ibm.ws.webcontainer.channel.WCChannelLink.ready (WCChannelLink.java:92)

    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination (HttpInboundLink.java:465)

    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation (HttpInboundLink.java:394)

    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready (HttpInboundLink.java:274)

    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators (NewConnectionInitialReadCallback.java:214)

    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete (NewConnectionInitialReadCallback.java:113)

    at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted (AioReadCompletionListener.java:152)

    at com.ibm.io.async.AbstractAsyncFuture.invokeCallback (AbstractAsyncFuture.java:213)

    at com.ibm.io.async.AbstractAsyncFuture.fireCompletionActions (AbstractAsyncFuture.java:195)

    at com.ibm.io.async.AsyncFuture.completed (AsyncFuture.java:136)

    at com.ibm.io.async.ResultHandler.complete (ResultHandler.java:193)

    at com.ibm.io.async.ResultHandler.runEventProcessingLoop (ResultHandler.java:725)

    at com.ibm.io.async.ResultHandler$2.run (ResultHandler.java:847)

    at com.ibm.ws.util.ThreadPool$Worker.run (ThreadPool.java:1498)

    ---- Begin backtrace for Nested Throwables

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'test' defined in ServletContext resource [/WEB-INF/test-ws-servlet.xml]: Invocation of init method failed; nested exception is org.springframework.ws.wsdl.wsdl11.Wsdl4jDefinitionException: WSDLException: faultCode=CONFIGURATION_ERROR: No Java extensionType found to represent a '{http://www.w3.org/2001/XMLSchema}schema' element in the context of a 'javax.wsdl.Types'.; nested exception is WSDLException: faultCode=CONFIGURATION_ERROR: No Java extensionType found to represent a '{http://www.w3.org/2001/XMLSchema}schema' element in the context of a 'javax.wsdl.Types'.:

    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.java:1337)

    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:473)

    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run (AbstractAutowireCapableBeanFactory.java:409)

    at java.security.AccessController.doPrivileged (AccessController.java:214)

    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:380)

    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject (AbstractBeanFactory.java:264)

    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:221)

    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:261)

    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:185)

    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:164)

    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons (DefaultListableBeanFactory.java:429)

    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization (AbstractApplicationContext.java:729)

    at org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:381)

    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext (FrameworkServlet.java:402)

    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext (FrameworkServlet.java:316)

    at org.springframework.web.servlet.FrameworkServlet.initServletBean (FrameworkServlet.java:282)

    at org.springframework.web.servlet.HttpServletBean.init (HttpServletBean.java:126)

    at javax.servlet.GenericServlet.init (GenericServlet.java:256)

    at com.ibm.ws.webcontainer.servlet.ServletWrapper.init (ServletWrapper.java:185)

    at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.init (ServletWrapper.java:316)

    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest (ServletWrapper.java:341)

    at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest (ServletWrapper.java:463)

    at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest (WebApp.java:3107)

    at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest (WebGroup.java:238)

    at com.ibm.ws.webcontainer.WebContainer.handleRequest (WebContainer.java:811)

    at com.ibm.ws.wswebcontainer.WebContainer.handleRequest (WebContainer.java:1425)

    at com.ibm.ws.webcontainer.channel.WCChannelLink.ready (WCChannelLink.java:92)

    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination (HttpInboundLink.java:465)

    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation (HttpInboundLink.java:394)

    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready (HttpInboundLink.java:274)

    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators (NewConnectionInitialReadCallback.java:214)

    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete (NewConnectionInitialReadCallback.java:113)

    at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted (AioReadCompletionListener.java:152)

    at com.ibm.io.async.AbstractAsyncFuture.invokeCallback (AbstractAsyncFuture.java:213)

    at com.ibm.io.async.AbstractAsyncFuture.fireCompletionActions (AbstractAsyncFuture.java:195)

    at com.ibm.io.async.AsyncFuture.completed (AsyncFuture.java:136)

    at com.ibm.io.async.ResultHandler.complete (ResultHandler.java:193)

    at com.ibm.io.async.ResultHandler.runEventProcessingLoop (ResultHandler.java:725)

    at com.ibm.io.async.ResultHandler$2.run (ResultHandler.java:847)

    at com.ibm.ws.util.ThreadPool$Worker.run (ThreadPool.java:1498)

    Caused by: org.springframework.ws.wsdl.wsdl11.Wsdl4jDefinitionException: WSDLException: faultCode=CONFIGURATION_ERROR: No Java extensionType found to represent a '{http://www.w3.org/2001/XMLSchema}schema' element in the context of a 'javax.wsdl.Types'.; nested exception is WSDLException: faultCode=CONFIGURATION_ERROR: No Java extensionType found to represent a '{http://www.w3.org/2001/XMLSchema}schema' element in the context of a 'javax.wsdl.Types'.:

    at org.springframework.ws.wsdl.wsdl11.builder.AbstractWsdl4jDefinitionBuilder.buildTypes (AbstractWsdl4jDefinitionBuilder.java:101)

    at org.springframework.ws.wsdl.wsdl11.DynamicWsdl11Definition.afterPropertiesSet (DynamicWsdl11Definition.java:72)

    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods (AbstractAutowireCapableBeanFactory.java:1368)

    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.java:1334)

    ... 39 more

    Caused by: WSDLException: faultCode=CONFIGURATION_ERROR: No Java extensionType found to represent a '{http://www.w3.org/2001/XMLSchema}schema' element in the context of a 'javax.wsdl.Types'.:

    at javax.wsdl.extensions.ExtensionRegistry.createExtension (Unknown Source)

    at org.springframework.ws.wsdl.wsdl11.builder.AbstractWsdl4jDefinitionBuilder.createExtension (AbstractWsdl4jDefinitionBuilder.java:195)

    at org.springframework.ws.wsdl.wsdl11.builder.XsdBasedSoap11Wsdl4jDefinitionBuilder.buildTypes (XsdBasedSoap11Wsdl4jDefinitionBuilder.java:243)

    at org.springframework.ws.wsdl.wsdl11.builder.AbstractWsdl4jDefinitionBuilder.buildTypes (AbstractWsdl4jDefinitionBuilder.java:98)

    ... 42 more

    ,

    [23.08.10 17:30:51:750 MSD] 00000028 ServiceLogger I com.ibm.ws.ffdc.IncidentStreamImpl open FFDC0009I: FFDC opened incident stream file E:\Program Files\IBM\WebSphere\AppServer1\profiles\AppSrv01\logs\ffdc\server1_7ce07ce0_10.08.23_17.30.51_1.txt

    [23.08.10 17:30:51:812 MSD] 00000028 ServiceLogger I com.ibm.ws.ffdc.IncidentStreamImpl resetIncidentStream FFDC0010I: FFDC closed incident stream file E:\Program Files\IBM\WebSphere\AppServer1\profiles\AppSrv01\logs\ffdc\server1_7ce07ce0_10.08.23_17.30.51_1.txt

    [23.08.10 17:30:51:859 MSD] 00000028 WebApp E [Servlet Error]-[test-ws]: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'test' defined in ServletContext resource [/WEB-INF/test-ws-servlet.xml]: Invocation of init method failed; nested exception is org.springframework.ws.wsdl.wsdl11.Wsdl4jDefinitionException: WSDLException: faultCode=CONFIGURATION_ERROR: No Java extensionType found to represent a '{http://www.w3.org/2001/XMLSchema}schema' element in the context of a 'javax.wsdl.Types'.; nested exception is WSDLException: faultCode=CONFIGURATION_ERROR: No Java extensionType found to represent a '{http://www.w3.org/2001/XMLSchema}schema' element in the context of a 'javax.wsdl.Types'.:

    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.java:1337)

    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:473)

    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run (AbstractAutowireCapableBeanFactory.java:409)

    at java.security.AccessController.doPrivileged (AccessController.java:214)

    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:380)

    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject (AbstractBeanFactory.java:264)

    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:221)

    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:261)

    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:185)

    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:164)

    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons (DefaultListableBeanFactory.java:429)

    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization (AbstractApplicationContext.java:729)

    at org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:381)

    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext (FrameworkServlet.java:402)

    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext (FrameworkServlet.java:316)

    at org.springframework.web.servlet.FrameworkServlet.initServletBean (FrameworkServlet.java:282)

    at org.springframework.web.servlet.HttpServletBean.init (HttpServletBean.java:126)

    at javax.servlet.GenericServlet.init (GenericServlet.java:256)

    at com.ibm.ws.webcontainer.servlet.ServletWrapper.init (ServletWrapper.java:185)

    at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.init (ServletWrapper.java:316)

    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest (ServletWrapper.java:341)

    at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest (ServletWrapper.java:463)

    at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest (WebApp.java:3107)

    at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest (WebGroup.java:238)

    at com.ibm.ws.webcontainer.WebContainer.handleRequest (WebContainer.java:811)

    at com.ibm.ws.wswebcontainer.WebContainer.handleRequest (WebContainer.java:1425)

    at com.ibm.ws.webcontainer.channel.WCChannelLink.ready (WCChannelLink.java:92)

    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination (HttpInboundLink.java:465)

    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation (HttpInboundLink.java:394)

    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready (HttpInboundLink.java:274)

    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators (NewConnectionInitialReadCallback.java:214)

    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete (NewConnectionInitialReadCallback.java:113)

    at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted (AioReadCompletionListener.java:152)

    at com.ibm.io.async.AbstractAsyncFuture.invokeCallback (AbstractAsyncFuture.java:213)

    at com.ibm.io.async.AbstractAsyncFuture.fireCompletionActions (AbstractAsyncFuture.java:195)

    at com.ibm.io.async.AsyncFuture.completed (AsyncFuture.java:136)

    at com.ibm.io.async.ResultHandler.complete (ResultHandler.java:193)

    at com.ibm.io.async.ResultHandler.runEventProcessingLoop (ResultHandler.java:725)

    at com.ibm.io.async.ResultHandler$2.run (ResultHandler.java:847)

    at com.ibm.ws.util.ThreadPool$Worker.run (ThreadPool.java:1498)

    Caused by: org.springframework.ws.wsdl.wsdl11.Wsdl4jDefinitionException: WSDLException: faultCode=CONFIGURATION_ERROR: No Java extensionType found to represent a '{http://www.w3.org/2001/XMLSchema}schema' element in the context of a 'javax.wsdl.Types'.; nested exception is WSDLException: faultCode=CONFIGURATION_ERROR: No Java extensionType found to represent a '{http://www.w3.org/2001/XMLSchema}schema' element in the context of a 'javax.wsdl.Types'.:

    at org.springframework.ws.wsdl.wsdl11.builder.AbstractWsdl4jDefinitionBuilder.buildTypes (AbstractWsdl4jDefinitionBuilder.java:101)

    at org.springframework.ws.wsdl.wsdl11.DynamicWsdl11Definition.afterPropertiesSet (DynamicWsdl11Definition.java:72)

    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods (AbstractAutowireCapableBeanFactory.java:1368)

    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.java:1334)

    ... 39 more

    Caused by: WSDLException: faultCode=CONFIGURATION_ERROR: No Java extensionType found to represent a '{http://www.w3.org/2001/XMLSchema}schema' element in the context of a 'javax.wsdl.Types'.:

    at javax.wsdl.extensions.ExtensionRegistry.createExtension (Unknown Source)

    at org.springframework.ws.wsdl.wsdl11.builder.AbstractWsdl4jDefinitionBuilder.createExtension (AbstractWsdl4jDefinitionBuilder.java:195)

    at org.springframework.ws.wsdl.wsdl11.builder.XsdBasedSoap11Wsdl4jDefinitionBuilder.buildTypes (XsdBasedSoap11Wsdl4jDefinitionBuilder.java:243)

    at org.springframework.ws.wsdl.wsdl11.builder.AbstractWsdl4jDefinitionBuilder.buildTypes (AbstractWsdl4jDefinitionBuilder.java:98)

    ... 42 more

  • http:// isabsent

    Тоже получил ошибку 500 при обращении к calc.html (библиотека Spring-2.5.6.SEC02 под NetBeans 6.9.1, jdk-1.6):

    javax.servlet.ServletException: No adapter for handler [SumController@1cbc39b]: Does your handler implement a supported interface like Controller?

    несмотря на объявление:

    public class SumController extends AbstractController

    Кстати, для нормального деплоя нужна библиотека portlet-api — без неё вылетает ошибка:

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'Calc' defined in ServletContext resource [/WEB-INF/SpringServlet-servlet.xml]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: javax/portlet/PortletException

    Должен сказать что с библиотеками spring-3.0.2.RELEASE вообще не деплоится — вылетает с:

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'Calc' defined in ServletContext resource [/WEB-INF/SpringServlet-servlet.xml]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: javax/portlet/MimeResponse

    Как заставить работать ваше приложение хотя бы для Spring-2.5.6 !?

  • http:// isabsent

    Полный лог привожу на всякий случай:

    javax.servlet.ServletException: No adapter for handler [SumController@19e97b]: Does your handler implement a supported interface like Controller?

    org.springframework.web.servlet.DispatcherServlet.getHandlerAdapter (DispatcherServlet.java:1100)

    org.springframework.web.servlet.DispatcherServlet.doDispatch (DispatcherServlet.java:874)

    org.springframework.web.servlet.DispatcherServlet.doService (DispatcherServlet.java:807)

    org.springframework.web.servlet.FrameworkServlet.processRequest (FrameworkServlet.java:571)

    org.springframework.web.servlet.FrameworkServlet.doGet (FrameworkServlet.java:501)

    javax.servlet.http.HttpServlet.service (HttpServlet.java:617)

    javax.servlet.http.HttpServlet.service (HttpServlet.java:717)

  • http:// isabsent

    Разобрался... Сделал неправильный импорт — вместо import org.springframework.web.portlet.mvc.AbstractController;

    указал

    import org.springframework.web.servlet.mvc.AbstractController;

    Отсюда и полез portlet и ошибки. Хорошо бы в тексте ваших примеров указывать и import'ы тоже — для «особо одарённых» 🙂

  • http:// isabsent

    P.S. Импорты в предыдущем сообщении местами поменять 🙂

  • http:// Avanturer

    Цитата из статьи:

    «А Model в данном случа хранит наши цифры, ну и в общемто можно положить любые объекты, которые надо обработать в JSP. В обработчике можно не возвращать объект ModelAndView, можно вернуть null, и сделать всю работу по выдаче данных самому, через response.getOutputStream () и т.д., что тоже иногда полезно.»

    Это судя по всему не совсем так:

    если в Контроллере использовать response.getOutputStream () и сделать всю работу по выдаче данных самому,а возвращать вместо ModelAndView null, все отрабатывает хорошо, но в лог сыплется ошибка:

    org.apache.jasper.JasperException: java.lang.IllegalStateException: getOutputStream () has already been called for this response

    это конечно не критично, но не приятно проверял на (Apache-Tomcat-6.0).

    Кто знает почему это происходит и как это предотвратить?

  • http:// Avanturer

    Разобрался с проблемой, может кому пригодиться.

    Происходит это потому, что повторно вызывается response.getOutputStream () из Spring`а.

    Как вариант, чтобы это предотвратить вместо Controller`а Spring`а использовать HttpServlet.

  • http:// kain

    Aries сказал:

    августа 16, 2010 в 12:18

    Пытался сделать этот пример и запустить его на websphere.

    Но в web.xml ругается на строку и выдает следующее:

    cvc-complex-type.2.4.a: Обнаружено недопустимое содержимое, начиная с элемента 'init-param'. Ожидалось одно из '{\http://java.sun.com/xml/ns/j2ee\:run-as, \http://java.sun.com/xml/ns/j2ee\:security-role-ref}'.

    Aries сказал:

    августа 16, 2010 в 14:14

    Уже разобрался с этой проблемой)

    такая же проблема, а можно описание разбора

  • http:// kain

    в классе SumController импорт org.springframework.web.servlet.DispatcherServlet прекрассно виден, а в web.xml указывает на такую же ошибку.

  • http:// i_lu_r@mail.ru

    все работает, только при нажатии кнопки «Calc» даные не отображаются — страница пустая ...