You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Grzegorz Oledzki (JIRA)" <ji...@apache.org> on 2009/10/30 11:02:59 UTC
[jira] Created: (CXF-2509)
java.lang.reflect.GenericSignatureFormatError within JAXBContextInitializer
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
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 se.sync.util.services.factories.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.
[jira] Resolved: (CXF-2509)
java.lang.reflect.GenericSignatureFormatError within JAXBContextInitializer
Posted by "Daniel Kulp (JIRA)" <ji...@apache.org>.
[ 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.
[jira] Updated: (CXF-2509)
java.lang.reflect.GenericSignatureFormatError within JAXBContextInitializer
Posted by "Grzegorz Oledzki (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/CXF-2509?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Grzegorz Oledzki updated CXF-2509:
----------------------------------
Description:
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}
was:
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 se.sync.util.services.factories.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}
> 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
>
> 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.