Important Notice - Forums is archived
To simplify things and help our users to be more productive, we have archived the current forum and focus our efforts on helping developers on Stack Overflow. You can post new questions on Stack Overflow or join our Discord channel.

Vaadin lets you build secure, UX-first PWAs entirely in Java.
Free ebook & tutorial.
spring2.5 injected vaadin portlet2
i'am a chinese vaadin developer
I'm use spring to develop vaadin portlet, but get a exception when deploy this porlet ,
Caused by: java.lang.ClassCastException: com.vaadin.terminal.gwt.server.ApplicationPortlet2 cannot be cast to javax.portlet.Portlet
at com.liferay.portal.deploy.hot.PortletHotDeployListener.initPortlet(PortletHotDeployListener.java:445)
at com.liferay.portal.deploy.hot.PortletHotDeployListener.doInvokeDeploy(PortletHotDeployListener.java:250)
at com.liferay.portal.deploy.hot.PortletHotDeployListener.invokeDeploy(PortletHotDeployListener.java:127)
... 22 more
this is my vaadin application code
public class VaadintestApplication extends Application
implements java.io.Serializable
{
private Window viewWindow;
private Window editWindow;
@Autowired
private AreaServiceImpl areaServiceImpl;
@Override
public void init() {
Window mainWindow = new Window("Vaadintest Application");
viewWindow=mainWindow;
SpringContextHelper helper=new SpringContextHelper(this);
areaServiceImpl=(AreaServiceImpl)helper.getBean("areaService");
AreaDemo demo=new AreaDemo(areaServiceImpl);
mainWindow.addComponent(demo);
mainWindow.setSizeFull();
// url /?username=deng&pwd=123456
mainWindow.addParameterHandler(new ParameterHandler(){
@Override
public void handleParameters(Map<String, String[]> parameters) {
// TODO Auto-generated method stub
Set<String> keysSet=parameters.keySet();
for(String key:keysSet)
{
String[] values=parameters.get(key);
System.out.println("key:"+key);
for(String value:values)
{
System.out.println("Value:"+value);
}
}
}
});
mainWindow.getContent().setWidth("100%");
mainWindow.getContent().setHeight("600px");
setMainWindow(mainWindow);
}
}
this is springhelpclass
public class SpringContextHelper {
private ApplicationContext context;
public SpringContextHelper(Application application) {
//portlet2
PortletContext portletContext = ((PortletApplicationContext2) application.getContext()).getPortletSession().getPortletContext();
context = PortletApplicationContextUtils.getWebApplicationContext(portletContext);
//portlet1
// ServletContext servletContext = ((ApplicationContext) application.getContext()).getHttpSession().getServletContext();
// context = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
}
public Object getBean(final String beanRef) {
return context.getBean(beanRef);
}
}
kevin tom: I'm use spring to develop vaadin portlet, but get a exception when deploy this porlet ,
Caused by: java.lang.ClassCastException: com.vaadin.terminal.gwt.server.ApplicationPortlet2 cannot be cast to javax.portlet.Portlet
at com.liferay.portal.deploy.hot.PortletHotDeployListener.initPortlet(PortletHotDeployListener.java:445)
at com.liferay.portal.deploy.hot.PortletHotDeployListener.doInvokeDeploy(PortletHotDeployListener.java:250)
at com.liferay.portal.deploy.hot.PortletHotDeployListener.invokeDeploy(PortletHotDeployListener.java:127)
... 22 more
This looks very much like a classloader problem: your application server loads the classes Portlet and ApplicationPortlet2 with different (unrelated) classloader instances and the Class instances in the JVM are not compatible with each other.
One option that should help would be to deploy vaadin.jar on the portal as a shared JAR (in webapps/ROOT/WEB-INF/lib on Liferay) and refer to it in your liferay-plugin-package.properties on the portal-dependency-jars=... line instead of deploying it with your portlet. When using portlet 2.0, you need to deploy the themes and widgetsets on the portal anyway as described e.g. here.
You can also search the forum for other related threads.
Also, you should make sure you are not deploying the portlet API JAR with your application, but that would not seem to be a problem here.