Hi List.

I am seeing an exception while using Hessian 3.1.1, Which I suspect is
related to my client code using references.

Exception from my Hessian based Servlet.

java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
       at java.util.ArrayList.RangeCheck(ArrayList.java:547)
       at java.util.ArrayList.get(ArrayList.java:322)
       at com.caucho.hessian.io.Hessian2Input.readObject(Hessian2Input.java
:1500)
       at com.caucho.hessian.server.HessianSkeleton.invoke(
HessianSkeleton.java:142)
       at com.caucho.hessian.server.HessianServlet.service(
HessianServlet.java:361)
       at org.apache.catalina.core.ApplicationFilterChain.servletService(
ApplicationFilterChain.java:398)
       at org.apache.catalina.core.StandardWrapperValve.invoke(
StandardWrapperValve.java:277)
       at org.apache.catalina.core.StandardContextValve.invokeInternal(
StandardContextValve.java:258)
       at org.apache.catalina.core.StandardContextValve.invoke(
StandardContextValve.java:189)
       at org.apache.catalina.core.StandardPipeline.doInvoke(
StandardPipeline.java:611)
       at org.apache.catalina.core.StandardPipeline.doInvoke(
StandardPipeline.java:564)
       at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:81)
       at org.apache.catalina.core.StandardHostValve.invoke(
StandardHostValve.java:193)
       at org.apache.catalina.core.StandardPipeline.doInvoke(
StandardPipeline.java:611)
       at org.apache.catalina.core.StandardPipeline.doInvoke(
StandardPipeline.java:564)
       at org.apache.catalina.core.StandardPipeline.invoke(
StandardPipeline.java:558)
       at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java
:1067)
       at org.apache.catalina.core.StandardEngineValve.invoke(
StandardEngineValve.java:137)
       at org.apache.catalina.core.StandardPipeline.doInvoke(
StandardPipeline.java:611)
       at org.apache.catalina.core.StandardPipeline.doInvoke(
StandardPipeline.java:564)
       at org.apache.catalina.core.StandardPipeline.invoke(
StandardPipeline.java:558)
       at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java
:1067)
       at org.apache.coyote.tomcat5.CoyoteAdapter.service(
CoyoteAdapter.java:255)
       at
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(
DefaultProcessorTask.java:618)
       at
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(
DefaultProcessorTask.java:549)
       at
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(
DefaultProcessorTask.java:790)
       at
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask
(DefaultReadTask.java:326)
       at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(
DefaultReadTask.java:248)
       at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(
DefaultReadTask.java:199)
       at
com.sun.enterprise.web.portunif.PortUnificationPipeline$PUTask.doTask(
PortUnificationPipeline.java:348)
       at com.sun.enterprise.web.connector.grizzly.TaskBase.run(
TaskBase.java:252)
       at com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(
SSLWorkerThread.java:93)


The client code looks like


       SupplierPart supplierPart = new SupplierPart();
       supplierPart.setComment1("c1");
       supplierPart.setComment2("c2");
       //supplierPart.setCompanyId(info.companyId);
       supplierPart.setConversionRate(BigDecimal.valueOf(1));  //
BigDecimal.ONE);
       supplierPart.setDescription("Testing PO pending IN TX");
       supplierPart.setLeadTime(10);
       supplierPart.setMinOrderQty(BigDecimal.valueOf(2));
//BigDecimal.ONE);
       supplierPart.setPartId(info.poliPartId);
       //supplierPart.setPrice(19.23);
       //supplierPart.setPriceUpdatedOn(new java.util.Date());
       supplierPart.setSpecial(false);
       supplierPart.setStdReorderQty(BigDecimal.valueOf(10));
       supplierPart.setSupplierId(info.supplierId);
       supplierPart.setSupplierProductCode("Testing " + part.getPartNumber
());
       supplierPart.setSupplierUnits("Each");
       supplierPart.setTaxCode("T1");

       List <SupplierPartPriceBreak> priceBreaks = new
ArrayList<SupplierPartPriceBreak>();
       SupplierPartPriceBreak priceBreak = new SupplierPartPriceBreak();
       priceBreak.setPrice(BigDecimal.valueOf(19.23));
       priceBreak.setQty(BigDecimal.valueOf(1.2));   //BigDecimal.ONE);
       priceBreaks.add(priceBreak);

       // Call Hessian Service
       Integer supplierPartId = starjarEnterprise.createSuppliedPart(auth,
supplierPart, priceBreaks);


To make the code work I've had to change all occurrences of BigDecimal.ONEto
BigDecimal.valueof(x).
Without this change,  the server side shows the above exception..


I am currently trying to reproduce this problem by using Hessian2Input and
Hessian2Output to make a simple test case, with little progress so far.

My question, is this a bug in my code or a bug in hessian?


Cheers


Peter Henderson
_______________________________________________
hessian-interest mailing list
[email protected]
http://maillist.caucho.com/mailman/listinfo/hessian-interest

Reply via email to