title: java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory
body: <blockquote>
  <p>Spring boot version 2.4.4</p>
  <p>Java version 15</p>
  </blockquote>
  <pre><code>@Bean
      public WebClient webClient() {
          return WebClient.builder().baseUrl(BASE_URL)
                  .defaultHeaders(header -&gt; header.setBasicAuth(&quot;test&quot;,
                          &quot;testpwd&quot;))
                  .clientConnector(new ReactorClientHttpConnector(HttpClient.newConnection()))
                  .exchangeStrategies(ExchangeStrategies.builder().codecs(configurer -&gt; {
                      configurer.defaultCodecs().jaxb2Encoder(new Jaxb2XmlEncoder());
                      configurer.defaultCodecs().jaxb2Decoder(new Jaxb2XmlDecoder());
                  }).build()).build();
          
      }
  </code></pre>
  <p>Using Spring boot 2.4.4 webclient and trying to consume the service with XML reponse.</p>
  <pre><code>public Mono&lt;ServerResponse&gt; retrieveServices() {
  
          // Headers can be passed here or while building the client
          Mono&lt;DirectoryOfService&gt; serviceMono = webClient
               .get().uri(&quot;/api/v1/test/services&quot;)
              .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_XML_VALUE)
              .accept(MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML)
              .retrieve().bodyToMono(DirectoryOfService.class);
  
      }
  </code></pre>
  <p><strong>Error:-</strong></p>
  <pre><code>    org.springframework.core.codec.CodecException: Could not create JAXBContext for class [class com.test.model.DirectoryOfService]: Implementation of JAXB-API has not been found on module path or classpath.; nested exception is javax.xml.bind.JAXBException: Implementation of JAXB-API has not been found on module path or classpath.
   - with linked exception:
  [java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory]
      at org.springframework.http.codec.xml.JaxbContextContainer.lambda$getJaxbContext$0(JaxbContextContainer.java:58) ~[spring-web-5.3.5.jar:5.3.5]
      Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 
  Error has been observed at the following site(s):
      |_ checkpoint ⇢ Body from GET https://test.com/api/v1/services [DefaultClientResponse]
      |_ checkpoint ⇢ HTTP GET &quot;/api/v1/services&quot; [ExceptionHandlingWebHandler]
  Stack trace:
          at org.springframework.http.codec.xml.JaxbContextContainer.lambda$getJaxbContext$0(JaxbContextContainer.java:58) ~[spring-web-5.3.5.jar:5.3.5]
          at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1708) ~[na:na]
          at org.springframework.http.codec.xml.JaxbContextContainer.getJaxbContext(JaxbContextContainer.java:52) ~[spring-web-5.3.5.jar:5.3.5]
          at org.springframework.http.codec.xml.JaxbContextContainer.createUnmarshaller(JaxbContextContainer.java:47) ~[spring-web-5.3.5.jar:5.3.5]
          at org.springframework.http.codec.xml.Jaxb2XmlDecoder.initUnmarshaller(Jaxb2XmlDecoder.java:235) ~[spring-web-5.3.5.jar:5.3.5]
          at org.springframework.http.codec.xml.Jaxb2XmlDecoder.unmarshal(Jaxb2XmlDecoder.java:216) ~[spring-web-5.3.5.jar:5.3.5]
          at org.springframework.http.codec.xml.Jaxb2XmlDecoder.decode(Jaxb2XmlDecoder.java:195) ~[spring-web-5.3.5.jar:5.3.5]
          at org.springframework.http.codec.xml.Jaxb2XmlDecoder.lambda$decodeToMono$2(Jaxb2XmlDecoder.java:183) ~[spring-web-5.3.5.jar:5.3.5]
          at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:113) ~[reactor-core-3.4.4.jar:3.4.4]
          at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107) ~[reactor-core-3.4.4.jar:3.4.4]
          at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onNext(FluxMapFuseable.java:295) ~[reactor-core-3.4.4.jar:3.4.4]
          at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onNext(FluxFilterFuseable.java:337) ~[reactor-core-3.4.4.jar:3.4.4]
          at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1815) ~[reactor-core-3.4.4.jar:3.4.4]
          at reactor.core.publisher.MonoCollect$CollectSubscriber.onComplete(MonoCollect.java:159) ~[reactor-core-3.4.4.jar:3.4.4]
          at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:142) ~[reactor-core-3.4.4.jar:3.4.4]
          at reactor.core.publisher.FluxPeek$PeekSubscriber.onComplete(FluxPeek.java:259) ~[reactor-core-3.4.4.jar:3.4.4]
          at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:142) ~[reactor-core-3.4.4.jar:3.4.4]
          at reactor.netty.channel.FluxReceive.onInboundComplete(FluxReceive.java:401) ~[reactor-netty-core-1.0.5.jar:1.0.5]
          at reactor.netty.channel.ChannelOperations.onInboundComplete(ChannelOperations.java:416) ~[reactor-netty-core-1.0.5.jar:1.0.5]
          at reactor.netty.channel.ChannelOperations.terminate(ChannelOperations.java:470) ~[reactor-netty-core-1.0.5.jar:1.0.5]
          at reactor.netty.http.client.HttpClientOperations.onInboundNext(HttpClientOperations.java:685) ~[reactor-netty-http-1.0.5.jar:1.0.5]
          at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:94) ~[reactor-netty-core-1.0.5.jar:1.0.5]
          at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.60.Final.jar:4.1.60.Final]
          at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.60.Final.jar:4.1.60.Final]
          at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[netty-transport-4.1.60.Final.jar:4.1.60.Final]
          at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436) ~[netty-transport-4.1.60.Final.jar:4.1.60.Final]
          at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324) ~[netty-codec-4.1.60.Final.jar:4.1.60.Final]
          at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:296) ~[netty-codec-4.1.60.Final.jar:4.1.60.Final]
          at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251) ~[netty-transport-4.1.60.Final.jar:4.1.60.Final]
          at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.60.Final.jar:4.1.60.Final]
          at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.60.Final.jar:4.1.60.Final]
          at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[netty-transport-4.1.60.Final.jar:4.1.60.Final]
          at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1534) ~[netty-handler-4.1.60.Final.jar:4.1.60.Final]
          at io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1283) ~[netty-handler-4.1.60.Final.jar:4.1.60.Final]
          at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1330) ~[netty-handler-4.1.60.Final.jar:4.1.60.Final]
          at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:508) ~[netty-codec-4.1.60.Final.jar:4.1.60.Final]
          at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:447) ~[netty-codec-4.1.60.Final.jar:4.1.60.Final]
          at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276) ~[netty-codec-4.1.60.Final.jar:4.1.60.Final]
          at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.60.Final.jar:4.1.60.Final]
          at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.60.Final.jar:4.1.60.Final]
          at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[netty-transport-4.1.60.Final.jar:4.1.60.Final]
          at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[netty-transport-4.1.60.Final.jar:4.1.60.Final]
          at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.60.Final.jar:4.1.60.Final]
          at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.60.Final.jar:4.1.60.Final]
          at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[netty-transport-4.1.60.Final.jar:4.1.60.Final]
          at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) ~[netty-transport-4.1.60.Final.jar:4.1.60.Final]
          at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:719) ~[netty-transport-4.1.60.Final.jar:4.1.60.Final]
          at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:655) ~[netty-transport-4.1.60.Final.jar:4.1.60.Final]
          at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:581) ~[netty-transport-4.1.60.Final.jar:4.1.60.Final]
          at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493) ~[netty-transport-4.1.60.Final.jar:4.1.60.Final]
          at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) ~[netty-common-4.1.60.Final.jar:4.1.60.Final]
          at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.60.Final.jar:4.1.60.Final]
          at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.60.Final.jar:4.1.60.Final]
          at java.base/java.lang.Thread.run(Thread.java:832) ~[na:na]
  Caused by: javax.xml.bind.JAXBException: Implementation of JAXB-API has not been found on module path or classpath.
      at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:278) ~[jaxb-api-2.3.1.jar:2.3.0]
      at javax.xml.bind.ContextFinder.find(ContextFinder.java:421) ~[jaxb-api-2.3.1.jar:2.3.0]
      at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:721) ~[jaxb-api-2.3.1.jar:2.3.0]
      at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:662) ~[jaxb-api-2.3.1.jar:2.3.0]
      at org.springframework.http.codec.xml.JaxbContextContainer.lambda$getJaxbContext$0(JaxbContextContainer.java:54) ~[spring-web-5.3.5.jar:5.3.5]
      at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1708) ~[na:na]
      at org.springframework.http.codec.xml.JaxbContextContainer.getJaxbContext(JaxbContextContainer.java:52) ~[spring-web-5.3.5.jar:5.3.5]
      at org.springframework.http.codec.xml.JaxbContextContainer.createUnmarshaller(JaxbContextContainer.java:47) ~[spring-web-5.3.5.jar:5.3.5]
      at org.springframework.http.codec.xml.Jaxb2XmlDecoder.initUnmarshaller(Jaxb2XmlDecoder.java:235) ~[spring-web-5.3.5.jar:5.3.5]
      at org.springframework.http.codec.xml.Jaxb2XmlDecoder.unmarshal(Jaxb2XmlDecoder.java:216) ~[spring-web-5.3.5.jar:5.3.5]
      at org.springframework.http.codec.xml.Jaxb2XmlDecoder.decode(Jaxb2XmlDecoder.java:195) ~[spring-web-5.3.5.jar:5.3.5]
      at org.springframework.http.codec.xml.Jaxb2XmlDecoder.lambda$decodeToMono$2(Jaxb2XmlDecoder.java:183) ~[spring-web-5.3.5.jar:5.3.5]
      at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:113) ~[reactor-core-3.4.4.jar:3.4.4]
      at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107) ~[reactor-core-3.4.4.jar:3.4.4]
      at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onNext(FluxMapFuseable.java:295) ~[reactor-core-3.4.4.jar:3.4.4]
      at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onNext(FluxFilterFuseable.java:337) ~[reactor-core-3.4.4.jar:3.4.4]
      at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1815) ~[reactor-core-3.4.4.jar:3.4.4]
      at reactor.core.publisher.MonoCollect$CollectSubscriber.onComplete(MonoCollect.java:159) ~[reactor-core-3.4.4.jar:3.4.4]
      at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:142) ~[reactor-core-3.4.4.jar:3.4.4]
      at reactor.core.publisher.FluxPeek$PeekSubscriber.onComplete(FluxPeek.java:259) ~[reactor-core-3.4.4.jar:3.4.4]
      at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:142) ~[reactor-core-3.4.4.jar:3.4.4]
      at reactor.netty.channel.FluxReceive.onInboundComplete(FluxReceive.java:401) ~[reactor-netty-core-1.0.5.jar:1.0.5]
      at reactor.netty.channel.ChannelOperations.onInboundComplete(ChannelOperations.java:416) ~[reactor-netty-core-1.0.5.jar:1.0.5]
      at reactor.netty.channel.ChannelOperations.terminate(ChannelOperations.java:470) ~[reactor-netty-core-1.0.5.jar:1.0.5]
      at reactor.netty.http.client.HttpClientOperations.onInboundNext(HttpClientOperations.java:685) ~[reactor-netty-http-1.0.5.jar:1.0.5]
      at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:94) ~[reactor-netty-core-1.0.5.jar:1.0.5]
      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.60.Final.jar:4.1.60.Final]
      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.60.Final.jar:4.1.60.Final]
      at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[netty-transport-4.1.60.Final.jar:4.1.60.Final]
      at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436) ~[netty-transport-4.1.60.Final.jar:4.1.60.Final]
      at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324) ~[netty-codec-4.1.60.Final.jar:4.1.60.Final]
      at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:296) ~[netty-codec-4.1.60.Final.jar:4.1.60.Final]
      at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251) ~[netty-transport-4.1.60.Final.jar:4.1.60.Final]
  </code></pre>
  <p>build.gradle,</p>
  <pre><code>dependencies {
      implementation 'org.springframework.boot:spring-boot-starter-webflux'
      implementation group: 'com.sun.xml.bind', name: 'jaxb-impl', version: '3.0.0'
      implementation group: 'com.sun.xml.bind', name: 'jaxb-core', version: '3.0.0'
      implementation group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.1'
          
  }
  </code></pre>
  <p>After removing com.sun.xml.bind and adding glassfish, getting the error below.</p>
  <blockquote>
  <p>implementation 'org.glassfish.jaxb:jaxb-runtime:2.3.1'</p>
  </blockquote>
  <p><strong>Error :</strong></p>
  <pre><code>org.springframework.core.codec.CodecException: Could not create JAXBContext for class [class com.test.model.DirectoryOfService]: 10 counts of IllegalAnnotationExceptions; nested exception is com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 10 counts of IllegalAnnotationExceptions
  Class has two properties of the same name &quot;section&quot;
      this problem is related to the following location:
          at public com.test.model.Section com.test.model.DirectoryOfService.getSection()
          at com.test.model.DirectoryOfService
      this problem is related to the following location:
          at private com.test.model.Section com.test.model.DirectoryOfService.section
          at com.test.model.DirectoryOfService
  Class has two properties of the same name &quot;name&quot;
      this problem is related to the following location:
          at public java.lang.String com.test.model.Section.getName()
          at com.test.model.Section
          at private com.test.model.Section com.test.model.DirectoryOfService.section
          at com.test.model.DirectoryOfService
      this problem is related to the following location:
          at private java.lang.String com.test.model.Section.name
          at com.test.model.Section
          at private com.test.model.Section com.test.model.DirectoryOfService.section
          at com.test.model.DirectoryOfService
  Class has two properties of the same name &quot;test&quot;
      this problem is related to the following location:
          at public java.util.List com.test.model.Section.getTest()
          at com.test.model.Section
          at private com.test.model.Section com.test.model.DirectoryOfService.section
          at com.test.model.DirectoryOfService
      this problem is related to the following location:
          at private java.util.List com.test.model.Section.test
          at com.test.model.Section
          at private com.test.model.Section com.test.model.DirectoryOfService.section
          at com.test.model.DirectoryOfService
  Class has two properties of the same name &quot;code&quot;
      this problem is related to the following location:
          at public java.lang.String com.test.model.Test.getCode()
          at com.test.model.Test
          at private java.util.List com.test.model.Section.test
          at com.test.model.Section
          at private com.test.model.Section com.test.model.DirectoryOfService.section
          at com.test.model.DirectoryOfService
      this problem is related to the following location:
          at private java.lang.String com.test.model.Test.code
          at com.test.model.Test
          at private java.util.List com.test.model.Section.test
          at com.test.model.Section
          at private com.test.model.Section com.test.model.DirectoryOfService.section
          at com.test.model.DirectoryOfService
  Class has two properties of the same name &quot;currency&quot;
      this problem is related to the following location:
          at public java.lang.String com.test.model.Test.getCurrency()
          at com.test.model.Test
          at private java.util.List com.test.model.Section.test
          at com.test.model.Section
          at private com.test.model.Section com.test.model.DirectoryOfService.section
          at com.test.model.DirectoryOfService
      this problem is related to the following location:
          at private java.lang.String com.test.model.Test.currency
          at com.test.model.Test
          at private java.util.List com.test.model.Section.test
          at com.test.model.Section
          at private com.test.model.Section com.test.model.DirectoryOfService.section
          at com.test.model.DirectoryOfService
  Class has two properties of the same name &quot;includes&quot;
      this problem is related to the following location:
          at public java.lang.String com.test.model.Test.getIncludes()
          at com.test.model.Test
          at private java.util.List com.test.model.Section.test
          at com.test.model.Section
          at private com.test.model.Section com.test.model.DirectoryOfService.section
          at com.test.model.DirectoryOfService
      this problem is related to the following location:
          at private java.lang.String com.test.model.Test.includes
          at com.test.model.Test
          at private java.util.List com.test.model.Section.test
          at com.test.model.Section
          at private com.test.model.Section com.test.model.DirectoryOfService.section
          at com.test.model.DirectoryOfService
  Class has two properties of the same name &quot;name&quot;
      this problem is related to the following location:
          at public java.lang.String com.test.model.Test.getName()
          at com.test.model.Test
          at private java.util.List com.test.model.Section.test
          at com.test.model.Section
          at private com.test.model.Section com.test.model.DirectoryOfService.section
          at com.test.model.DirectoryOfService
      this problem is related to the following location:
          at private java.lang.String com.test.model.Test.name
          at com.test.model.Test
          at private java.util.List com.test.model.Section.test
          at com.test.model.Section
          at private com.test.model.Section com.test.model.DirectoryOfService.section
          at com.test.model.DirectoryOfService
  Class has two properties of the same name &quot;nonDiscountable&quot;
      this problem is related to the following location:
          at public boolean com.test.model.Test.isNonDiscountable()
          at com.test.model.Test
          at private java.util.List com.test.model.Section.test
          at com.test.model.Section
          at private com.test.model.Section com.test.model.DirectoryOfService.section
          at com.test.model.DirectoryOfService
      this problem is related to the following location:
          at private boolean com.test.model.Test.nonDiscountable
          at com.test.model.Test
          at private java.util.List com.test.model.Section.test
          at com.test.model.Section
          at private com.test.model.Section com.test.model.DirectoryOfService.section
          at com.test.model.DirectoryOfService
  Class has two properties of the same name &quot;replicate&quot;
      this problem is related to the following location:
          at public int com.test.model.Test.getReplicate()
          at com.test.model.Test
          at private java.util.List com.test.model.Section.test
          at com.test.model.Section
          at private com.test.model.Section com.test.model.DirectoryOfService.section
          at com.test.model.DirectoryOfService
      this problem is related to the following location:
          at private int com.test.model.Test.replicate
          at com.test.model.Test
          at private java.util.List com.test.model.Section.test
          at com.test.model.Section
          at private com.test.model.Section com.test.model.DirectoryOfService.section
          at com.test.model.DirectoryOfService
  Class has two properties of the same name &quot;validFrom&quot;
      this problem is related to the following location:
          at public java.util.Date com.test.model.Test.getValidFrom()
          at com.test.model.Test
          at private java.util.List com.test.model.Section.test
          at com.test.model.Section
          at private com.test.model.Section com.test.model.DirectoryOfService.section
          at com.test.model.DirectoryOfService
      this problem is related to the following location:
          at private java.util.Date com.test.model.Test.validFrom
          at com.test.model.Test
          at private java.util.List com.test.model.Section.test
          at com.test.model.Section
          at private com.test.model.Section com.test.model.DirectoryOfService.section
          at com.test.model.DirectoryOfService
  </code></pre>
  <p>Sample response file,</p>
  <pre><code>&lt;?xml version='1.0' encoding='UTF-8'?&gt;
  &lt;DirectoryOfService&gt;
      &lt;Section Name=&quot;Directory&quot;&gt;
          &lt;Test&gt;
              &lt;Name&gt;Mike&lt;/Name&gt;
              &lt;Code&gt;USA&lt;/Code&gt;
              &lt;Replicate&gt;0&lt;/Replicate&gt;
              &lt;ValidFrom&gt;2016-06-30&lt;/ValidFrom&gt;
              &lt;Includes&gt;Test Includes&lt;/Includes&gt;
              &lt;Currency&gt;None&lt;/Currency&gt;
              &lt;NonDiscountable&gt;false&lt;/NonDiscountable&gt;
          &lt;/Test&gt;
          &lt;Test&gt;
              &lt;Name&gt;Bingo&lt;/Name&gt;
              &lt;Code&gt;USA&lt;/Code&gt;
              &lt;Replicate&gt;0&lt;/Replicate&gt;
              &lt;ValidFrom&gt;2016-06-30&lt;/ValidFrom&gt;
              &lt;Includes&gt;Test Includes&lt;/Includes&gt;
              &lt;Currency&gt;None&lt;/Currency&gt;
              &lt;NonDiscountable&gt;false&lt;/NonDiscountable&gt;
          &lt;/Test&gt;
      &lt;/Section&gt;
  &lt;/DirectoryOfService&gt;
  </code></pre>
  <p><strong>Model classes,</strong></p>
  <p><strong>DirectoryOfService class,</strong></p>
  <pre><code>import javax.xml.bind.annotation.XmlElementRef;
  import javax.xml.bind.annotation.XmlRootElement;
  
  
  @XmlRootElement(name=&quot;DirectoryOfService&quot;)
  public class DirectoryOfService {
  
      @XmlElementRef(name = &quot;Section&quot;)
      private Section section;
  
      
      public Section getSection() {
          return section;
      }
  
      public void setSection(Section section) {
          this.section = section;
      }
  
  }
  </code></pre>
  <p><strong>Section calss,</strong></p>
  <pre><code>    @XmlRootElement(name=&quot;Section&quot;)
      public class Section {
      
          @XmlElementRef(name = &quot;Test&quot;)
          private List&lt;Test&gt; test;
          @XmlAttribute(name = &quot;Name&quot;)
          private String name;
          //public String text;
      
          public List&lt;Test&gt; getTest() {
              return test;
          }
      
          
          public void setTest(List&lt;Test&gt; test) {
              this.test = test;
          }
      
          
          public String getName() {
              return name;
          }
      
          
          public void setName(String name) {
              this.name = name;
          }
      
      }
  
  Test class,
  
  @XmlRootElement(name = &quot;Test&quot;)
  public class Test {
  
      @XmlElement(name = &quot;Name&quot;)
      private String name;
      @XmlElement(name = &quot;Code&quot;)
      private String code;
      @XmlElement(name = &quot;Replicate&quot;)
      private int replicate;
      @XmlElement(name = &quot;ValidFrom&quot;)
      private Date validFrom;
      @XmlElement(name = &quot;Includes&quot;)
      private String includes;
      @XmlElement(name = &quot;Currency&quot;)
      private String currency;
      @XmlElement(name = &quot;NonDiscountable&quot;)
      private boolean nonDiscountable;
  
      public String getName() {
          return name;
      }
  
      
      public void setName(String name) {
          this.name = name;
      }
  
      
      public String getCode() {
          return code;
      }
  
      
      public void setCode(String code) {
          this.code = code;
      }
  
      
      public int getReplicate() {
          return replicate;
      }
  
      
      public void setReplicate(int replicate) {
          this.replicate = replicate;
      }
  
      
      public Date getValidFrom() {
          return validFrom;
      }
  
      
      public void setValidFrom(Date validFrom) {
          this.validFrom = validFrom;
      }
  
      
      public String getIncludes() {
          return includes;
      }
  
      
      public void setIncludes(String includes) {
          this.includes = includes;
      }
  
      
      public String getCurrency() {
          return currency;
      }
  
      
      public void setCurrency(String currency) {
          this.currency = currency;
      }
  
      
      public boolean isNonDiscountable() {
          return nonDiscountable;
      }
  
      
      public void setNonDiscountable(boolean nonDiscountable) {
          this.nonDiscountable = nonDiscountable;
      }
  
  }
  </code></pre>