[
https://issues.apache.org/jira/browse/CXF-3722?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13290577#comment-13290577
]
Greg Holmberg commented on CXF-3722:
------------------------------------
I tried to do something similar with JAX-RS and JAXB. I found myself writing
the same CRUD service code (create, get/query, update, delete) over and over
again, for one POJO and then another. The code was nearly identical in each
case. I thought, what a waste of time--I should write a generic CRUD service,
and then instantiate it for each POJO. For example:
@XmlType
public interface NamedObject {
@XmlAttribute
public String getName();
}
abstract class NamedObjectService<NamedObjectType extends NamedObject> {
@PUT
@Consumes("application/xml")
public Response create(NamedObjectType object) { ... }
}
@XmlRootElement
public class MyPOJO implements NamedObject { ... }
@Path("/myservice")
public class MyService extends NamedObjectService<MyPOJO> { ... }
I wrote a proxy-based client (i.e. using the magic CGLib), and when I called
MyService.create(), I got this exception:
Caused by: org.apache.cxf.jaxrs.client.ClientWebApplicationException: .No
message body writer has been found for class : interface com.blah.NamedObject,
ContentType : application/xml;charset=utf-8.
at
org.apache.cxf.jaxrs.client.AbstractClient.reportMessageHandlerProblem(AbstractClient.java:611)
at
org.apache.cxf.jaxrs.client.AbstractClient.writeBody(AbstractClient.java:409)
at
org.apache.cxf.jaxrs.client.ClientProxyImpl$BodyWriter.handleMessage(ClientProxyImpl.java:640)
So it didn't find the JAXB code to marshall MyPOJO.
It's a shame. It would save me so much time if I didn't have to copy and paste
this code for each CRUD service.
I don't know if this is an issue for JAX-RS or for JAXB, but would it be
possible to support this in CXF?
Thanks,
Greg
> Generic interface and Implementation
> ------------------------------------
>
> Key: CXF-3722
> URL: https://issues.apache.org/jira/browse/CXF-3722
> Project: CXF
> Issue Type: Bug
> Affects Versions: 2.2
> Environment: CXF 2.2.6
> JAVA 6
> Windows XP
> Tomcat 6
> Code First
> Reporter: Deboschère Tony
> Assignee: Daniel Kulp
> Priority: Minor
> Fix For: Invalid
>
>
> I ve createad a Generic interface, let say IGenericInterface<TYPE extends
> MyAbstracTypeOne, TYPE2 extends MyAbstractTypeTwo>
> In this interface are some méthode like :
> public TYPE getTypeFromType2(TYPE2);
> In another interface I extends IGenericInterface
> and add some specific methods
> ex :
> @WebService
> ISpecificInterface extends IgenericInterface<MySubTypeOne, MySubTypeTwo> {
> @WebMethod
> public MySubTypeOne getTest();
> }
> When I implement ISpecificInterface in an implementation class, then add the
> @Webservice @WebResult and other @WebParam and launch my server
> I do see a web service with two methods in the wsdl
> getTest and getTypeFromType2.
> But the second method returns xml corresponding to the abstractType
> MyAbstracTypeOne and not MySubTypeOne
> PS : I launch the webservice serverside via :
> Object webServiceImpl = webServiceClass.newInstance();
> Endpoint endpoint = Endpoint.create(webServiceImpl);
> endpoint.publish("/" + name);
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira