You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Daniel Kulp (JIRA)" <ji...@apache.org> on 2009/10/30 17:29:59 UTC

[jira] Resolved: (CXF-2509) java.lang.reflect.GenericSignatureFormatError within JAXBContextInitializer

     [ https://issues.apache.org/jira/browse/CXF-2509?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Daniel Kulp resolved CXF-2509.
------------------------------

       Resolution: Fixed
    Fix Version/s: 2.2.5
         Assignee: Daniel Kulp

> java.lang.reflect.GenericSignatureFormatError within JAXBContextInitializer
> ---------------------------------------------------------------------------
>
>                 Key: CXF-2509
>                 URL: https://issues.apache.org/jira/browse/CXF-2509
>             Project: CXF
>          Issue Type: Bug
>          Components: JAXB Databinding
>    Affects Versions: 2.2.4
>         Environment: jaxb-api-2.1.jar, jaxb-impl-2.1.11.jar
>            Reporter: Grzegorz Oledzki
>            Assignee: Daniel Kulp
>             Fix For: 2.2.5
>
>
> We have a bunch of web services started programmatically using:
> {code}
> JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
> factory.setServiceClass(serviceInterface);
> factory.setServiceBean(serviceBean);
> factory.setAddress(url);
> ...
> factory.create();
> {code}
> Some of the services include a method which return type is generics:
> {code}
> public interface Service<DTO extends Entity<? extends Serializable>, QS extends QuerySummary> extends ... {
> QueryResult<DTO, QS> read(Query query, UserId uc);
> ...
> }
> {code}
> After upgrading CXF to version 2.2.4 they no longer start. The exception thrown is:
> {code}
> java.lang.reflect.GenericSignatureFormatError
> 	at sun.reflect.generics.parser.SignatureParser.error(SignatureParser.java:103)
> 	at sun.reflect.generics.parser.SignatureParser.parseFieldTypeSignature(SignatureParser.java:233)
> 	at sun.reflect.generics.parser.SignatureParser.parseTypeArgument(SignatureParser.java:319)
> 	at sun.reflect.generics.parser.SignatureParser.parseTypeArguments(SignatureParser.java:284)
> 	at sun.reflect.generics.parser.SignatureParser.parseSimpleClassTypeSignature(SignatureParser.java:260)
> 	at sun.reflect.generics.parser.SignatureParser.parseClassTypeSignatureSuffix(SignatureParser.java:270)
> 	at sun.reflect.generics.parser.SignatureParser.parseClassTypeSignature(SignatureParser.java:244)
> 	at sun.reflect.generics.parser.SignatureParser.parseFieldTypeSignature(SignatureParser.java:228)
> 	at sun.reflect.generics.parser.SignatureParser.parseTypeArgument(SignatureParser.java:319)
> 	at sun.reflect.generics.parser.SignatureParser.parseTypeArguments(SignatureParser.java:284)
> 	at sun.reflect.generics.parser.SignatureParser.parseSimpleClassTypeSignature(SignatureParser.java:260)
> 	at sun.reflect.generics.parser.SignatureParser.parseClassTypeSignatureSuffix(SignatureParser.java:270)
> 	at sun.reflect.generics.parser.SignatureParser.parseClassTypeSignature(SignatureParser.java:244)
> 	at sun.reflect.generics.parser.SignatureParser.parseFieldTypeSignature(SignatureParser.java:228)
> 	at sun.reflect.generics.parser.SignatureParser.parseTypeSignature(SignatureParser.java:359)
> 	at sun.reflect.generics.parser.SignatureParser.parseTypeSig(SignatureParser.java:157)
> 	at sun.reflect.generics.repository.FieldRepository.parse(FieldRepository.java:34)
> 	at sun.reflect.generics.repository.FieldRepository.parse(FieldRepository.java:24)
> 	at sun.reflect.generics.repository.AbstractRepository.<init>(AbstractRepository.java:56)
> 	at sun.reflect.generics.repository.FieldRepository.<init>(FieldRepository.java:30)
> 	at sun.reflect.generics.repository.FieldRepository.make(FieldRepository.java:48)
> 	at java.lang.reflect.Field.getGenericInfo(Field.java:85)
> 	at java.lang.reflect.Field.getGenericType(Field.java:223)
> 	at org.apache.cxf.jaxb.JAXBContextInitializer.walkReferences(JAXBContextInitializer.java:288)
> 	at org.apache.cxf.jaxb.JAXBContextInitializer.addClass(JAXBContextInitializer.java:244)
> 	at org.apache.cxf.jaxb.JAXBContextInitializer.begin(JAXBContextInitializer.java:151)
> 	at org.apache.cxf.service.ServiceModelVisitor.visitOperation(ServiceModelVisitor.java:109)
> 	at org.apache.cxf.service.ServiceModelVisitor.walk(ServiceModelVisitor.java:74)
> 	at org.apache.cxf.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:322)
> 	at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromClass(ReflectionServiceFactoryBean.java:398)
> 	at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.buildServiceFromClass(JaxWsServiceFactoryBean.java:525)
> 	at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:461)
> 	at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:212)
> 	at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:163)
> 	at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:100)
> 	at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:117)
> 	at org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:167)
> 	at com.xxx.ServiceServerFactory.create(ServiceServerFactory.java:53)
> {code}
> After some debugging (namely setting a breakpoint in JAXBContextInitializer.walkReferences) I could only observe that:
> - under 2.2.3, the breakpoint was at JAXBContextInitializer.walkReferences:271, the f (Field) value is:
> {code}
> private com.xxx.queryresult.QueryResult com.xxx.jaxws_asm.ReadResponse.queryResult
> {code}
> and its f.signature is NULL
> - under 2.2.4, the breakpoint was at JAXBContextInitializer.walkReferences:288, the f (Field) value is:
> {code}
> private com.xxx.queryresult.QueryResult com.xxx.jaxws_asm.ReadResponse.queryResult
> {code}
> which is the same, but its f.signature is very different:
> {code}
> Lcom/xxx/queryresult/QueryResult<Lcom/xxx/DTOEntity<null>;Lcom/xxx/QuerySummary;>;
> {code}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.