hi, I wrote some code on @ConversationAttributes(maxIdleTime="1 seconds", maxAge="2 seconds", singlePrincipal=false) feature and found below error message: java.io.NotSerializableException: org.apache.tuscany.sca.core.context.ConversationImpl
Anybody can give me some hints? Thanks! The error message reported by JUnit: java.io.NotSerializableException: org.apache.tuscany.sca.core.context.ConversationImpl at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1108) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java :1462) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java :1434) at java.io.ObjectOutputStream.writeOrdinaryObject( ObjectOutputStream.java:1377) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1106) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java :1462) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java :1434) at java.io.ObjectOutputStream.writeOrdinaryObject( ObjectOutputStream.java:1377) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1106) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:324) at samples.hex.HexTest.testConversationAttributesSinglePrincipalFalse( HexTest.java:220) The JUnit Code: @Test public void testConversationAttributesSinglePrincipalFalse() throws InterruptedException, IOException, ClassNotFoundException { CartService cart1 = hex.getService(CartService.class, "CartComponent/CartService"); cart1.updateItem("Portus", 1); ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream os = new ObjectOutputStream(baos); os.writeObject(cart1); os.close(); ObjectInputStream oi = new ObjectInputStream(new ByteArrayInputStream( baos.toByteArray())); CartService cart2 = (CartService) oi.readObject(); assertNotNull(cart2); cart2.updateItem("Avis", 1); assertEquals(2, cart1.getItems().size()); assertEquals(2, cart2.getItems().size()); } The component definition: <component name="CartComponent"> <implementation.java class="samples.hex.cart.impl.CartImpl"/> </component> The Interface: package samples.hex.cart.services; import java.util.Map; import org.osoa.sca.annotations.Conversational; import org.osoa.sca.annotations.EndsConversation; @Conversational public interface CartService{ public void updateItem(String itemID, int quantity); @EndsConversation public void empty(); public Map<String, Integer> getItems(); } The implementation: package samples.hex.cart.impl; import java.util.HashMap; import java.util.Map; import org.osoa.sca.annotations.ConversationAttributes; import org.osoa.sca.annotations.ConversationID; import org.osoa.sca.annotations.Destroy; import org.osoa.sca.annotations.Init; import org.osoa.sca.annotations.Scope; import org.osoa.sca.annotations.Service; import samples.hex.cart.services.CartService; @Scope("CONVERSATION") @Service(CartService.class) @ConversationAttributes(maxIdleTime="1 seconds", maxAge="2 seconds", singlePrincipal=false) public class CartImpl implements CartService { @ConversationID protected String conversationID; private Map<String, Integer> cart; @Init protected void init(){ if(cart==null) cart = new HashMap<String, Integer>(); } public void empty() { System.out.println("[empty] "+conversationID + ":" + this); } public Map<String, Integer> getItems() { return cart; } public void updateItem(String itemID, int quantity) { if(quantity<=0) cart.remove(itemID); cart.put(itemID, quantity); System.out.println(conversationID + ":" + this); } @Destroy protected void destroy(){ empty(); } } -- Cheers Jun Jie Nan ∧ ∧�� ミ^ō^ミ灬)~