Three classes and the stack trace. The sessions is default
sessions-from-entityclasses they are not included.
The webservice has four methods.
1. Test() - creates a new Parent and return a String with id and name
2. Test2() - finds the Parent with Id 2, and creates and add a child
3. getParent1 - finds a parent and returns the id & name + id & name for
childs
4. getParent2 - finds a parent and return it.
Now when I test this in order. Step 1 - 2 - 3 works perfectly, and the sql
and data in tables looks nice.
But 4 - gives error.
javax.xml.ws.WebServiceException
at
com.sun.xml.ws.message.jaxb.JAXBMessage.writePayloadTo(JAXBMessage.java:300)
at
com.sun.xml.ws.message.AbstractMessageImpl.writeTo(AbstractMessageImpl.java:171)
at
com.sun.xml.ws.message.AbstractMessageImpl.readAsSOAPMessage(AbstractMessageImpl.java:193)
at
com.sun.enterprise.webservice.SOAPMessageContextImpl.getMessage(SOAPMessageContextImpl.java:87)
at
com.sun.enterprise.webservice.monitoring.MessageTraceImpl.setMessageContext(MessageTraceImpl.java:124)
at
com.sun.enterprise.webservice.monitoring.JAXWSEndpointImpl.processResponse(JAXWSEndpointImpl.java:105)
at
com.sun.enterprise.webservice.MonitoringPipe.process(MonitoringPipe.java:155)
at
com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:115)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:595)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:554)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:539)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:436)
at
com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process(AbstractTubeImpl.java:106)
at
com.sun.xml.ws.tx.service.TxServerPipe.process(TxServerPipe.java:317)
at
com.sun.enterprise.webservice.CommonServerSecurityPipe.processRequest(CommonServerSecurityPipe.java:218)
at
com.sun.enterprise.webservice.CommonServerSecurityPipe.process(CommonServerSecurityPipe.java:129)
at
com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:115)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:595)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:554)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:539)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:436)
at
com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:243)
at
com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:444)
at
com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:244)
at
com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:135)
at
com.sun.enterprise.webservice.Ejb3MessageDispatcher.handlePost(Ejb3MessageDispatcher.java:113)
at
com.sun.enterprise.webservice.Ejb3MessageDispatcher.invoke(Ejb3MessageDispatcher.java:87)
at
com.sun.enterprise.webservice.EjbWebServiceServlet.dispatchToEjbEndpoint(EjbWebServiceServlet.java:200)
at
com.sun.enterprise.webservice.EjbWebServiceServlet.service(EjbWebServiceServlet.java:129)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
at
com.sun.enterprise.web.AdHocContextValve.invoke(AdHocContextValve.java:114)
at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:87)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:206)
at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:150)
at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
at
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:270)
at
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:637)
at
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:568)
at
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:813)
at
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:339)
at
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:261)
at
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:212)
at
com.sun.enterprise.web.portunif.PortUnificationPipeline$PUTask.doTask(PortUnificationPipeline.java:361)
at
com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265)
at
com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)
Caused by: javax.xml.bind.MarshalException
- with linked exception:
[com.sun.istack.SAXException2: A cycle is detected in the object graph. This
will cause infinitely deep XML: entity.Parent_at_10ba2d1 -> entity.Child_at_ee791d
-> entity.Parent_at_10ba2d1]
at
com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:282)
at
com.sun.xml.bind.v2.runtime.BridgeImpl.marshal(BridgeImpl.java:110)
at com.sun.xml.bind.api.Bridge.marshal(Bridge.java:178)
at
com.sun.xml.ws.message.jaxb.JAXBMessage.writePayloadTo(JAXBMessage.java:294)
... 54 more
Caused by: com.sun.istack.SAXException2: A cycle is detected in the object
graph. This will cause infinitely deep XML: entity.Parent_at_10ba2d1 ->
entity.Child_at_ee791d -> entity.Parent_at_10ba2d1
at
com.sun.xml.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.java:244)
at
com.sun.xml.bind.v2.runtime.XMLSerializer.pushObject(XMLSerializer.java:533)
at
com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:627)
at
com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.serializeBody(SingleElementNodeProperty.java:150)
at
com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:322)
at
com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:681)
at
com.sun.xml.bind.v2.runtime.property.ArrayElementNodeProperty.serializeItem(ArrayElementNodeProperty.java:65)
at
com.sun.xml.bind.v2.runtime.property.ArrayElementProperty.serializeListBody(ArrayElementProperty.java:168)
at
com.sun.xml.bind.v2.runtime.property.ArrayERProperty.serializeBody(ArrayERProperty.java:152)
at
com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:322)
at
com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:681)
at
com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.serializeBody(SingleElementNodeProperty.java:150)
at
com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:322)
at
com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:681)
at
com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:277)
... 57 more
Cannot log SOAP Message null
invocation error on ejb endpoint testWS at /testWSService/testWS :
javax.xml.bind.MarshalException
- with linked exception:
[com.sun.istack.SAXException2: A cycle is detected in the object graph. This
will cause infinitely deep XML: entity.Parent_at_10ba2d1 -> entity.Child_at_ee791d
-> entity.Parent_at_10ba2d1]
javax.xml.ws.WebServiceException: javax.xml.bind.MarshalException
- with linked exception:
[com.sun.istack.SAXException2: A cycle is detected in the object graph. This
will cause infinitely deep XML: entity.Parent_at_10ba2d1 -> entity.Child_at_ee791d
-> entity.Parent_at_10ba2d1]
at
com.sun.xml.ws.message.jaxb.JAXBMessage.writePayloadTo(JAXBMessage.java:317)
at
com.sun.xml.ws.message.AbstractMessageImpl.writeTo(AbstractMessageImpl.java:142)
at
com.sun.xml.ws.encoding.StreamSOAPCodec.encode(StreamSOAPCodec.java:108)
at
com.sun.xml.ws.encoding.SOAPBindingCodec.encode(SOAPBindingCodec.java:265)
at
com.sun.xml.ws.transport.http.HttpAdapter.encodePacket(HttpAdapter.java:320)
at
com.sun.xml.ws.transport.http.HttpAdapter.access$100(HttpAdapter.java:93)
at
com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:454)
at
com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:244)
at
com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:135)
at
com.sun.enterprise.webservice.Ejb3MessageDispatcher.handlePost(Ejb3MessageDispatcher.java:113)
at
com.sun.enterprise.webservice.Ejb3MessageDispatcher.invoke(Ejb3MessageDispatcher.java:87)
at
com.sun.enterprise.webservice.EjbWebServiceServlet.dispatchToEjbEndpoint(EjbWebServiceServlet.java:200)
at
com.sun.enterprise.webservice.EjbWebServiceServlet.service(EjbWebServiceServlet.java:129)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
at
com.sun.enterprise.web.AdHocContextValve.invoke(AdHocContextValve.java:114)
at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:87)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:206)
at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:150)
at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
at
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:270)
at
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:637)
at
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:568)
at
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:813)
at
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:339)
at
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:261)
at
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:212)
at
com.sun.enterprise.web.portunif.PortUnificationPipeline$PUTask.doTask(PortUnificationPipeline.java:361)
at
com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265)
at
com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)
Caused by: javax.xml.bind.MarshalException
- with linked exception:
[com.sun.istack.SAXException2: A cycle is detected in the object graph. This
will cause infinitely deep XML: entity.Parent_at_10ba2d1 -> entity.Child_at_ee791d
-> entity.Parent_at_10ba2d1]
at
com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:282)
at
com.sun.xml.bind.v2.runtime.BridgeImpl.marshal(BridgeImpl.java:100)
at com.sun.xml.bind.api.Bridge.marshal(Bridge.java:141)
at
com.sun.xml.ws.message.jaxb.JAXBMessage.writePayloadTo(JAXBMessage.java:310)
... 38 more
Caused by: com.sun.istack.SAXException2: A cycle is detected in the object
graph. This will cause infinitely deep XML: entity.Parent_at_10ba2d1 ->
entity.Child_at_ee791d -> entity.Parent_at_10ba2d1
at
com.sun.xml.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.java:244)
at
com.sun.xml.bind.v2.runtime.XMLSerializer.pushObject(XMLSerializer.java:533)
at
com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:627)
at
com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.serializeBody(SingleElementNodeProperty.java:150)
at
com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:322)
at
com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:681)
at
com.sun.xml.bind.v2.runtime.property.ArrayElementNodeProperty.serializeItem(ArrayElementNodeProperty.java:65)
at
com.sun.xml.bind.v2.runtime.property.ArrayElementProperty.serializeListBody(ArrayElementProperty.java:168)
at
com.sun.xml.bind.v2.runtime.property.ArrayERProperty.serializeBody(ArrayERProperty.java:152)
at
com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:322)
at
com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:681)
at
com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.serializeBody(SingleElementNodeProperty.java:150)
at
com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:322)
at
com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:681)
at
com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:277)
... 41 more
@WebService()
@Stateless()
public class testWS {
@EJB
session.ParentFacadeRemote pfr;
@EJB
session.ChildFacadeRemote cfr;
/**
* Web service operation
*/
@WebMethod(operationName = "test")
public String test() {
Parent p = new Parent();
p.setName("test1");
pfr.create(p);
String result = "";
@SuppressWarnings("unchecked")
List<Parent> pl = pfr.findAll();
for(Parent pa : pl) {
result += "|" + pa.getId() + " | " + pa.getName();
}
return result;
}
/**
* Web service operation
*/
@WebMethod(operationName = "test2")
public String test2() {
Parent parent = pfr.find(new Integer(2));
String result = "|" +parent.getId() + "-" + parent.getName() + "|";
Child child = new Child();
child.setName("Child1");
child.setParent(parent);
cfr.create(child);
@SuppressWarnings("unchecked")
List<Child> childList = cfr.findAll();
for(Child child2 : childList) {
parent.getChilds().add(child2);
}
pfr.edit(parent);
Parent parent2 = pfr.find(new Integer(2));
result += "|PARENT2:" +parent.getId() + "-" + parent.getName() +
"|";
result += "CHILD:";
for(Child c : parent2.getChilds()) {
result += "c:" + c.getId() + "-" + c.getName();
}
return result;
}
/**
* Web service operation
*/
@WebMethod(operationName = "getParent2")
public Parent getParent2(@WebParam(name = "id")
Integer id) {
Parent parent = pfr.find(id);
return parent;
}
/**
* Web service operation
*/
@WebMethod(operationName = "getParent1")
public String getParent1(@WebParam(name = "id")
Integer id) {
Parent parent = pfr.find(id);
String r = "|" + parent.getId() + "-" + parent.getName();
for(Child child : parent.getChilds()) {
r += "" + child.getId() + "|" + child.getName() + "<br>";
}
return r;
}
}
@Entity
public class Parent implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private String name;
private List<Child> childs;
public void setId(Integer id) {
this.id = id;
}
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Integer getId() {
return id;
}
@OneToMany(cascade = CascadeType.ALL, mappedBy = "parent", fetch =
FetchType.EAGER)
public List<Child> getChilds() {
return childs;
}
public void setChilds(List<Child> childs) {
this.childs = childs;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
@Entity
public class Child implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
String name;
Parent parent;
public void setId(Integer id) {
this.id = id;
}
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Integer getId() {
return id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@ManyToOne
@JoinColumn(name = "parent_id")
public Parent getParent() {
return parent;
}
public void setParent(Parent parent) {
this.parent = parent;
}
}
James Sutherland wrote:
>
> What errors do you get?
>
> Please include stack trace and what you did to get the error.
>
> ---
> http://wiki.java.net/bin/view/People/JamesSutherland James Sutherland
>
>
> kriskross wrote:
>>
>> Hi.
>> I have not bin able to solve this problem.
>> It's all about @OneToMany - @ManyToOne relations in entitys.
>> As long as I use my entitys in a session bean, there is no problem.
>> But, when I try to use them as objects in a webservice I'll get plenty of
>> errors.
>> I've tried serveral methods with @XmlRootElement and @XmlTransient with
>> no luck.
>>
>> Using the webservice I'm able to create objects, connect objects, but
>> when I try to recive an object from the db it allways gives errors.
>>
>> So, if you have anything, any tips or other questions, please let me
>> know. I've bin strugling with this for over a year now.
>>
>> Best Regards
>> Kristian
>>
>>
>> Marina Vatkina wrote:
>>>
>>> Hi,
>>>
>>> Did you solve your problem? If not, can you please explain what does it
>>> mean
>>> "does not set any Produkt"?
>>>
>>> thanks,
>>> -marina
>>>
>>> kriskross wrote:
>>>> Hi
>>>> Hope someone can helpe me. I'm stuck here.Having two objects:
>>>>
>>>> @XmlRootElement
>>>> @Entity
>>>> public class Produkt implements Serializable {
>>>>
>>>> @Id
>>>> @GeneratedValue(strategy = GenerationType.SEQUENCE, generator =
>>>> "Produkt_id_seq")
>>>> private Integer id;
>>>> ...
>>>> @XmlElement(name = "varelagers")
>>>> @OneToMany(cascade = CascadeType.ALL, mappedBy = "produkt", fetch =
>>>> FetchType.EAGER)
>>>> private List<Varelager> varelagers;
>>>>
>>>> public List<Varelager> getVarelager() {
>>>> return this.varelagers;
>>>> }
>>>> ..
>>>> }
>>>>
>>>>
>>>> and
>>>> @Entity
>>>> public class Varelager implements Serializable {
>>>> @Id
>>>> @GeneratedValue(strategy = GenerationType.SEQUENCE, generator =
>>>> "Varelager_id_seq")
>>>> private Integer id;
>>>>
>>>> ......
>>>>
>>>> @ManyToOne
>>>> @JoinColumn(name = "produkt_id")
>>>> private Produkt produkt;
>>>>
>>>> @ManyToOne
>>>> @JoinColumn(name = "storelse_id")
>>>> private Storelse storelse;
>>>>
>>>> public Produkt getProdukt() {
>>>> return produkt;
>>>> }
>>>>
>>>> public void setProdukt(Produkt produkt) {
>>>> this.produkt = produkt;
>>>> }
>>>> }
>>>>
>>>> I've created an webservice that exposes both produkt and varelager.
>>>> And I'm trying to add a "varelager" to "produkt", using the webservice.
>>>> But here my objects does not have all the same methods.
>>>> I'm missing Varelager.getProdukt(), and Varelager.setProdukt(Produkt
>>>> produkt).
>>>>
>>>> Anyone who can tell me why??
>>>>
>>>>
>>>> I've allso tried this as a workarround
>>>> Produkt p = webservice.getproddukt(new Integer(1));
>>>> Varelager vl = new Varelager();
>>>> vl = webservice.createVarelager(vl);
>>>> p.getVarelagers().add(vl);
>>>> webservice.editProdukt(p);
>>>>
>>>> This creates the varelager object, but does not set any Produkt.
>>>> Any other way?
>>>
>>>
>>
>>
>
>
--
View this message in context: http://www.nabble.com/%40OneToMany---%40ManyToOne-WebService-and-%40XmlRootElement-tf4405404.html#a12791120
Sent from the java.net - glassfish persistence mailing list archive at Nabble.com.