Hi,
I am developing a vaadin webapplication on JBoss AS 7 / Wildfly 8. A requirement is to guarantee high availability, so I tried to use a Wildfly-Cluster (after I failed with JBoss AS 7). After some minor stepbacks I could successfully deploy a test app with working session replication. The problem is as soon as I try to use the vaadin-cdi addon(with @CDIUI) the node gives me an exception that the class vaadin.cdi.internal.UIBean is not serializable. I then tried to build the addon from source and add Serializable to the class, but just to find the same exception for the class org.jboss.weld.bean.ManagedBean . Does anyone know a solution or workaround for this problem since other parts of the application rely on CDI.
my TestUI
@Theme("learn_vaadin")
@CDIUI("vaadin")
// @PreserveOnRefresh
public class Learn_vaadinUI extends UI {
private String value;
private VerticalLayout statusHolder = new VerticalLayout();
private TextField textField = new TextField();
@Override
protected void init(VaadinRequest request) {
HorizontalLayout layout = new HorizontalLayout();
layout.addComponent(statusHolder);
layout.addComponent(textField);
layout.addComponent(new Button("Set new values", new Button.ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
String value = textField.getValue();
saveValue(Learn_vaadinUI.this, value);
}
}));
layout.addComponent(new Button("Reload page", new Button.ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
getPage().setLocation(getPage().getLocation());
}
}));
showValue(this);
setContent(layout);
}
private static void saveValue(Learn_vaadinUI ui,
String value) {
// Save to UI instance
ui.value = value;
// Save to VaadinServiceSession
ui.getSession().setAttribute("myValue", value);
// Save to HttpSession
VaadinService.getCurrentRequest().getWrappedSession()
.setAttribute("myValue", value);
// Show new values
showValue(ui);
}
private static void showValue(Learn_vaadinUI ui) {
ui.statusHolder.removeAllComponents();
ui.statusHolder.addComponent(new Label("UILD: " + ui.getUIId()));
ui.statusHolder.addComponent(new Label("SessionID: " + ui.getSession().getSession().getId()));
ui.statusHolder.addComponent(new Label("Value in UI: " + ui.value));
ui.statusHolder.addComponent(new Label(
"Value in VaadinServiceSession: "
+ ui.getSession().getAttribute("myValue")));
ui.statusHolder.addComponent(new Label("Value in HttpSession: "
+ VaadinService.getCurrentRequest().getWrappedSession()
.getAttribute("myValue")));
}
}
Stacktrace:
2014-06-19 09:15:15,498 ERROR [org.infinispan.transaction.TransactionCoordinator]
(default task-52) ISPN000097: Error while processing a prepare in a single-phase transaction: org.infinispan.commons.CacheException: java.lang.RuntimeException: Failure to marshal argument(s)
at org.infinispan.commons.util.Util.rewrapAsCacheException(Util.java:581)
at org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher.invokeRemoteCommand(CommandAwareRpcDispatcher.java:176)
at org.infinispan.remoting.transport.jgroups.JGroupsTransport.invokeRemotely(JGroupsTransport.java:521)
at org.infinispan.remoting.rpc.RpcManagerImpl.invokeRemotely(RpcManagerImpl.java:281)
at org.infinispan.interceptors.distribution.TxDistributionInterceptor.prepareOnAffectedNodes(TxDistributionInterceptor.java:219)
at org.infinispan.interceptors.distribution.TxDistributionInterceptor.visitPrepareCommand(TxDistributionInterceptor.java:203)
at org.infinispan.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:124)
at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:98)
at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:112)
at org.infinispan.commands.AbstractVisitor.visitPrepareCommand(AbstractVisitor.java:96)
at org.infinispan.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:124)
at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:98)
at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:112)
at org.infinispan.commands.AbstractVisitor.visitPrepareCommand(AbstractVisitor.java:96)
at org.infinispan.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:124)
at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:98)
at org.infinispan.interceptors.EntryWrappingInterceptor.visitPrepareCommand(EntryWrappingInterceptor.java:96)
at org.infinispan.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:124)
at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:98)
at org.infinispan.interceptors.locking.AbstractTxLockingInterceptor.invokeNextAndCommitIf1Pc(AbstractTxLockingInterceptor.java:78)
at org.infinispan.interceptors.locking.PessimisticLockingInterceptor.visitPrepareCommand(PessimisticLockingInterceptor.java:83)
at org.infinispan.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:124)
at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:98)
at org.infinispan.interceptors.NotificationInterceptor.visitPrepareCommand(NotificationInterceptor.java:36)
at org.infinispan.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:124)
at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:98)
at org.infinispan.interceptors.TxInterceptor.invokeNextInterceptorAndVerifyTransaction(TxInterceptor.java:114)
at org.infinispan.interceptors.TxInterceptor.visitPrepareCommand(TxInterceptor.java:101)
at org.infinispan.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:124)
at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:98)
at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:112)
at org.infinispan.commands.AbstractVisitor.visitPrepareCommand(AbstractVisitor.java:96)
at org.infinispan.statetransfer.TransactionSynchronizerInterceptor.visitPrepareCommand(TransactionSynchronizerInterceptor.java:42)
at org.infinispan.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:124)
at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:98)
at org.infinispan.statetransfer.StateTransferInterceptor.handleTopologyAffectedCommand(StateTransferInterceptor.java:263)
at org.infinispan.statetransfer.StateTransferInterceptor.handleTxCommand(StateTransferInterceptor.java:194)
at org.infinispan.statetransfer.StateTransferInterceptor.visitPrepareCommand(StateTransferInterceptor.java:94)
at org.infinispan.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:124)
at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:98)
at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:112)
at org.infinispan.commands.AbstractVisitor.visitPrepareCommand(AbstractVisitor.java:96)
at org.infinispan.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:124)
at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:98)
at org.infinispan.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:110)
at org.infinispan.interceptors.InvocationContextInterceptor.handleDefault(InvocationContextInterceptor.java:73)
at org.infinispan.commands.AbstractVisitor.visitPrepareCommand(AbstractVisitor.java:96)
at org.infinispan.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:124)
at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:98)
at org.infinispan.interceptors.BatchingInterceptor.handleDefault(BatchingInterceptor.java:66)
at org.infinispan.commands.AbstractVisitor.visitPrepareCommand(AbstractVisitor.java:96)
at org.infinispan.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:124)
at org.infinispan.interceptors.InterceptorChain.invoke(InterceptorChain.java:333)
at org.infinispan.transaction.TransactionCoordinator.commit(TransactionCoordinator.java:154)
at org.infinispan.transaction.synchronization.SynchronizationAdapter.afterCompletion(SynchronizationAdapter.java:58)
at org.infinispan.transaction.tm.DummyTransaction.notifyAfterCompletion(DummyTransaction.java:263)
at org.infinispan.transaction.tm.DummyTransaction.runCommitTx(DummyTransaction.java:312)
at org.infinispan.transaction.tm.DummyTransaction.commit(DummyTransaction.java:69)
at org.infinispan.transaction.tm.DummyBaseTransactionManager.commit(DummyBaseTransactionManager.java:80)
at org.infinispan.batch.BatchContainer.resolveTransaction(BatchContainer.java:101)
at org.infinispan.batch.BatchContainer.endBatch(BatchContainer.java:83)
at org.infinispan.batch.BatchContainer.endBatch(BatchContainer.java:64)
at org.infinispan.CacheImpl.endBatch(CacheImpl.java:777)
at org.infinispan.AbstractDelegatingCache.endBatch(AbstractDelegatingCache.java:53)
at org.wildfly.clustering.web.infinispan.InfinispanBatcher$1.end(InfinispanBatcher.java:56)
at org.wildfly.clustering.web.infinispan.InfinispanBatcher$1.close(InfinispanBatcher.java:46)
at org.wildfly.clustering.web.undertow.session.DistributableSession.requestDone(DistributableSession.java:72)
at io.undertow.servlet.spec.ServletContextImpl.updateSessionAccessTime(ServletContextImpl.java:719) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.servlet.spec.HttpServletResponseImpl.responseDone(HttpServletResponseImpl.java:522) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:287) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:227) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:73) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:146) [undertow-servlet-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:177) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:727) [undertow-core-1.0.15.Final.jar:1.0.15.Final]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_55]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_55]
at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_55]
Caused by: java.lang.RuntimeException: Failure to marshal argument(s)
at org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher.marshallCall(CommandAwareRpcDispatcher.java:333)
at org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher.processSingleCall(CommandAwareRpcDispatcher.java:352)
at org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher.invokeRemoteCommand(CommandAwareRpcDispatcher.java:167)
... 76 more
Caused by: org.infinispan.commons.marshall.NotSerializableException: com.vaadin.cdi.internal.UIBean
Caused by: an exception which occurred:
in field instances
in field beanStores
in field instance
in object java.util.HashMap@e3036516
in object org.jboss.as.clustering.marshalling.SimpleMarshalledValue@e3036516
in object org.infinispan.commands.write.ReplaceCommand@510cee24
in object org.infinispan.commands.tx.PrepareCommand@4ae5ffcb