Community
Participate
Working Groups
Build Identifier: jetty-hightide-8.0.0.M2 I am trying access my Java POJO classes with BlazeDs deployed in Jetty server. For small requests things are working fine. But for list(ArrayList) of java object as response drill down to a hang in server. For detail see steps to reproduce. Reproducible: Always Steps to Reproduce: Steps to reproduce: Just copying the code I used to simulate problem *part of MXML* <mx:RemoteObject id="srv_RO" destination="product_RO"/> <mx:DataGrid dataProvider="{srv_RO.getProducts.lastResult}" width="100%" height="100%" x="70" /> <mx:Button label="Get" click="srv_RO.getProducts()" /> ==================================== *sumit/SumitProduct.java* package sumit; public class SumitProduct { private String name; private int price; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } } ============================== *sumit/SumitProductService.java* package sumit; import java.util.ArrayList; import java.util.List; import java.util.Random; //import flex.messaging.io.ArrayCollection; public class SumitProductService { private static final String[] MASTER_LIST = {"C", "FNM", "FRE", "F", "GOOG", "AIG", "CSCO", "MSFT", "AAPL", "YHOO", "BSX", "PORT","F", "TNT", "ESP", "RET", "V BN", "EES"}; public SumitProductService(){} public List<SumitProduct> getProducts(){ List<SumitProduct> list = new ArrayList<SumitProduct>(); Random r = new Random(); for (String s:MASTER_LIST){ SumitProduct sq = new SumitProduct(); sq.setName(s); sq.setPrice(r.nextInt(50)); list.add(sq); } return list; } } Actual Results: Hang ... no result Error is :- [BlazeDS]09:19:26.225 [ERROR] class sun.reflect.GeneratedMethodAccessor7 cannot access its superclass sun.reflect.MethodAccessorImpl Expected Results: records set Workaround (if any): NO Stack trace after enbling debug in Jetty server: 011-03-08 09:19:26.189:DBUG::REQUEST /samples/messagebroker/amf on org.eclipse.jetty.server.nio.SelectChannelConnector$3@16d3046 2011-03-08 09:19:26.189:DBUG::Got Session ID zq5tvow0ibsvcj2yqxgp5g2w from cookie 2011-03-08 09:19:26.190:DBUG::sessionManager=org.eclipse.jetty.server.session.HashSessionManager@1c8fb4b 2011-03-08 09:19:26.190:DBUG::session=org.eclipse.jetty.server.session.HashSessionManager$HashedSession:zq5tvow0ibsvcj2yqxgp5g2w@3695078 2011-03-08 09:19:26.190:DBUG::servlet=MessageBrokerServlet 2011-03-08 09:19:26.190:DBUG::servlet holder= MessageBrokerServlet 2011-03-08 09:19:26.190:DBUG::chain= null [BlazeDS]09:19:26.191 [INFO] Channel endpoint my-amf received request. 2011-03-08 09:19:26.193:DBUG::loaded class flex.messaging.messages.RPCMessage from WebAppClassLoader@BlazeDS 2011-03-08 09:19:26.193:DBUG::loaded class flex.messaging.messages.RemotingMessage from WebAppClassLoader@BlazeDS [BlazeDS]09:19:26.201 [DEBUG] Deserializing AMF/HTTP request Version: 3 (Message #0 targetURI=null, responseURI=/1) (Array #0) [0] = (Typed Object #0 'flex.messaging.messages.RemotingMessage') operation = "getProducts" source = null timeToLive = 0 messageId = "78FF1C6C-B1BD-51DB-DEC6-93956597379A" body = (Array #1) timestamp = 0 clientId = null headers = (Object #2) DSId = "B64FC5E9-0B0E-2AB9-C2B5-2D74013589CB" DSEndpoint = "my-amf" destination = "product_RO" [BlazeDS]09:19:26.202 [DEBUG] Before invoke service: remoting-service incomingMessage: Flex Message (flex.messaging.messages.RemotingMessage) operation = getProducts clientId = B64FC857-9A0A-9C00-013C-D650DB2E9BE4 destination = product_RO messageId = 78FF1C6C-B1BD-51DB-DEC6-93956597379A timestamp = 1299556166202 timeToLive = 0 body = [ ] hdr(DSId) = B64FC5E9-0B0E-2AB9-C2B5-2D74013589CB hdr(DSEndpoint) = my-amf 2011-03-08 09:19:26.203:DBUG::loaded class flex.messaging.messages.MessagePerformanceUtils from WebAppClassLoader@BlazeDS 2011-03-08 09:19:26.204:DBUG::loaded class flex.messaging.messages.MessagePerformanceInfo from WebAppClassLoader@BlazeDS 2011-03-08 09:19:26.208:DBUG::loaded class flex.messaging.util.MethodMatcher$Match from WebAppClassLoader@BlazeDS 2011-03-08 09:19:26.209:DBUG::loaded class flex.messaging.util.MethodKey from WebAppClassLoader@BlazeDS 2011-03-08 09:19:26.210:DBUG::loaded class sumit.SumitProduct from WebAppClassLoader@BlazeDS [BlazeDS]09:19:26.210 [DEBUG] Adapter 'java-object' called 'sumit.SumitProductService.getProducts(java.util.Arrays$ArrayList (Collection size:0) )' 2011-03-08 09:19:26.215:DBUG::loaded interface flex.messaging.util.PrettyPrintable from WebAppClassLoader@BlazeDS 2011-03-08 09:19:26.222:DBUG::loaded interface sun.reflect.MethodAccessor from WebAppClassLoader@BlazeDS 2011-03-08 09:19:26.223:DBUG::loaded class sun.reflect.MagicAccessorImpl from WebAppClassLoader@BlazeDS 2011-03-08 09:19:26.223:DBUG::loaded class sun.reflect.MethodAccessorImpl from WebAppClassLoader@BlazeDS [BlazeDS]09:19:26.223 [DEBUG] Result: 'java.util.ArrayList (Collection size:18) [0] = sumit.SumitProduct price = 18 name = C [1] = sumit.SumitProduct price = 2 name = FNM [2] = sumit.SumitProduct price = 41 name = FRE [3] = sumit.SumitProduct price = 8 name = F [4] = sumit.SumitProduct price = 6 name = GOOG [5] = sumit.SumitProduct price = 16 name = AIG [6] = sumit.SumitProduct price = 35 name = CSCO [7] = sumit.SumitProduct price = 31 name = MSFT [8] = sumit.SumitProduct price = 3 name = AAPL [9] = sumit.SumitProduct price = 36 name = YHOO [10] = sumit.SumitProduct price = 4 name = BSX [11] = sumit.SumitProduct price = 4 name = PORT [12] = sumit.SumitProduct price = 48 name = F [13] = sumit.SumitProduct price = 32 name = TNT [14] = sumit.SumitProduct price = 21 name = ESP [15] = sumit.SumitProduct price = ' [BlazeDS]09:19:26.224 [DEBUG] After invoke service: remoting-service reply: java.util.ArrayList (Collection size:18) [0] = sumit.SumitProduct price = [BlazeDS]09:19:26.225 [DEBUG] Serializing AMF/HTTP response Version: 3 (Message #0 targetURI=/1/onResult, responseURI=) (Externalizable Object #0 'DSK') (Externalizable Object #1 'flex.messaging.io.ArrayCollection') (Array #2) [0] = (Typed Object #3 'sumit.SumitProduct') 2011-03-08 09:19:26.226:DBUG::loaded class flex.messaging.util.ExceptionUtil from WebAppClassLoader@BlazeDS 2011-03-08 09:19:26.226:DBUG::loaded class java.util.NoSuchElementException 2011-03-08 09:19:26.226:DBUG::loaded class java.util.NoSuchElementException from null [BlazeDS]09:19:26.225 [ERROR] class sun.reflect.GeneratedMethodAccessor7 cannot access its superclass sun.reflect.MethodAccessorImpl java.lang.IllegalAccessError: class sun.reflect.GeneratedMethodAccessor7 cannot access its superclass sun.reflect.MethodAccessorImpl at sun.misc.Unsafe.defineClass(Native Method) at sun.reflect.ClassDefiner.defineClass(ClassDefiner.java:45) at sun.reflect.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java:381) at java.security.AccessController.doPrivileged(Native Method) at sun.reflect.MethodAccessorGenerator.generate(MethodAccessorGenerator.java:377) at sun.reflect.MethodAccessorGenerator.generateMethod(MethodAccessorGenerator.java:59) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:28) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at flex.messaging.io.BeanProxy$BeanProperty.get(BeanProxy.java:825) at flex.messaging.io.BeanProxy.getBeanValue(BeanProxy.java:199) at flex.messaging.io.BeanProxy.getValue(BeanProxy.java:173) at flex.messaging.io.amf.Amf3Output.writePropertyProxy(Amf3Output.java:601) at flex.messaging.io.amf.Amf3Output.writeCustomObject(Amf3Output.java:532) at flex.messaging.io.amf.Amf3Output.writeObject(Amf3Output.java:207) at flex.messaging.io.amf.Amf3Output.writeObjectArray(Amf3Output.java:854) at flex.messaging.io.amf.Amf3Output.writeAMFArray(Amf3Output.java:445) at flex.messaging.io.amf.Amf3Output.writeObject(Amf3Output.java:193) at flex.messaging.io.ArrayCollection.writeExternal(ArrayCollection.java:97) at flex.messaging.io.amf.Amf3Output.writePropertyProxy(Amf3Output.java:594) at flex.messaging.io.amf.Amf3Output.writeArrayCollection(Amf3Output.java:476) at flex.messaging.io.amf.Amf3Output.writeObject(Amf3Output.java:189) at flex.messaging.messages.AbstractMessage.writeExternalBody(AbstractMessage.java:705) at flex.messaging.messages.AbstractMessage.writeExternal(AbstractMessage.java:435) at flex.messaging.messages.AsyncMessage.writeExternal(AsyncMessage.java:140) at flex.messaging.messages.AcknowledgeMessage.writeExternal(AcknowledgeMessage.java:94) at flex.messaging.messages.AcknowledgeMessageExt.writeExternal(AcknowledgeMessageExt.java:55) at flex.messaging.io.amf.Amf3Output.writePropertyProxy(Amf3Output.java:594) at flex.messaging.io.amf.Amf3Output.writeCustomObject(Amf3Output.java:532) at flex.messaging.io.amf.Amf3Output.writeObject(Amf3Output.java:112) at flex.messaging.io.amf.Amf0Output.writeObject(Amf0Output.java:206) at flex.messaging.io.amf.AmfMessageSerializer.writeObject(AmfMessageSerializer.java:196) at flex.messaging.io.amf.AmfMessageSerializer.writeBody(AmfMessageSerializer.java:186) at flex.messaging.io.amf.AmfMessageSerializer.writeMessage(AmfMessageSerializer.java:142) at flex.messaging.endpoints.amf.SerializationFilter.invoke(SerializationFilter.java:198) at flex.messaging.endpoints.BaseHTTPEndpoint.service(BaseHTTPEndpoint.java:291) at flex.messaging.MessageBrokerServlet.service(MessageBrokerServlet.java:353) at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:546) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:483) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:479) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:230) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:956) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:411) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:188) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:891) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117) at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:247) at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:151) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:114) at org.eclipse.jetty.server.Server.handle(Server.java:349) at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:598) at org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:1076) at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:805) at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:212) at org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:427) at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:510) at org.eclipse.jetty.io.nio.SelectChannelEndPoint.access$000(SelectChannelEndPoint.java:34) at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:40) at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:450) at java.lang.Thread.run(Thread.java:662) 2011-03-08 09:19:26.228:DBUG::RESPONSE /samples/messagebroker/amf 200 2011-03-08 09:19:26.235:DBUG::EOF org.eclipse.jetty.io.EofException 2011-03-08 09:20:26.242:DBUG::EXCEPTION
I finally figured it out it is not jetty-BlazeDs combo problem. I have included java's rt.jar in my test client's lib directory and Jetty loads both JRE and test client lib. I deleted rt.jar from my test client's lib and things works fine