Hi Eugene,

Just a couple of questions before I start to reproduce you problem.

1/ Are you sure that it is not able to find beans implementing IApplication? Obviously you will get exactly the same exception if it finds more than one bean, right?
2/ Which version of Spring are you using?

And you are saying that the whole story works using the development runner, right?
Have a nice day. Regards,

christian
--
Canoo - Your Solution Provider for Rich Internet Applications

    Christian Ribeaud
    Canoo Engineering AG
    Kirschgartenstrasse 5
    CH-4051 Basel

    Tel: +41 61 228 94 44
    Fax: +41 61 228 94 49

    [email protected]
    http://www.canoo.com/

On Jul 24, 2009, at 6:49 AM, Eugene Coelho wrote:

Hi,

For a past few days i have been trying to get ulc springmvc integration working for a project. I could manage to get development runner running as shown in one of the mails on the mailing list .

The problem arises when i access the application as a webapplication.
When i access the jsp page the SpringWebULCApplication gets instantiated but when it goes to find the application using the following

public static IApplication getApplication(ApplicationContext context, String applicationBeanName) {
  IApplication application;
  if(applicationBeanName != null) {
application = ((IApplication) context.getBean(applicationBeanName));
  } else {
final Map applications = context.getBeansOfType(IApplication.class); if(applications.size() != 1) throw new IllegalArgumentException("Application context must contain exactly one ULCApplication: "+applications); application = (IApplication) applications.values().iterator().next();
  }
  return application;
}

it is not able to locate the bean which implements IApplication.class and hence terminates with an error "Application context must contain exactly one ULCApplication:"

Can someone help me in  making use of SpringWebULCApplication class.
Is there anything more that is required like an applicationContext.xml file to let the framework find the class that implements IApplication.class ?
------------------------------------------------------------------------
So far i  have managed  to do the following changes.
1>Edit web.xml  to introduce

<servlet>
  <servlet-name>springapp</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</ servlet-class>
  <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
  <servlet-name>springapp</servlet-name>
  <url-pattern>/ulc</url-pattern>
</servlet-mapping>

2>Introduce file called springapp-servlet.xml in the same location as web.xml

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

<beans xmlns="http://www.springframework.org/schema/beans";
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
     xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring- beans-2.5.xsd">

<!-- the application context definition for the springapp DispatcherServlet -->

<bean name="/ulc" class="org.mernst.ulcjava.spring.ULCController"/>
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping "/>

</beans>

3>Edit the xxxx.jsp file and update the url to access /ulc
<%
String applicationUrl = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() +
                        request.getContextPath() + "/ulc";
%>

4>Introduce spring.xml in the resources ( i guess this would be only used with development launcher code)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans";
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xsi:schemaLocation="http://www.springframework.org/schema/ beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd ">

<bean name="ABC" scope="prototype" class="com.xxx.xxxx.application.ABC">
</bean>

</beans>

(Class ABC implements  IApplication)

5>Development Runner Code

public class SpringDevelopmentRunner implements IApplication {
    private static final String SPRING_XML = "/spring.xml";
  private static final String SPRING_IAPPLICATION_BEAN = "ABC";

  private ClassPathXmlApplicationContext _springContext;
  private IApplication _delegate;

  public void start() {
      _springContext = new ClassPathXmlApplicationContext(SPRING_XML);
_delegate = (IApplication) _springContext.getBean(SPRING_IAPPLICATION_BEAN);
      _delegate.start();
  }
...
.. ...

Thanks,
Eugene
_______________________________________________
ULC-developer mailing list
[email protected]
http://lists.canoo.com/mailman/listinfo/ulc-developer

_______________________________________________
ULC-developer mailing list
[email protected]
http://lists.canoo.com/mailman/listinfo/ulc-developer

Reply via email to