title: JAXB classes from Webservice marshalling error
body: <p>I have some wsimport generated JAXB classes</p>
  
  <pre><code>wsimport -d src/main/java -keep -extension
    -p my.package
    http://www.OpenLigaDB.de/Webservices/Sportsdata.asmx?WSDL
  </code></pre>
  
  <p>I will demonstrate the problem with this class (only the @XmlRootElement was added by myself):</p>
  
  <pre><code>package my.package;
  
  import javax.xml.bind.annotation.XmlAccessType;
  import javax.xml.bind.annotation.XmlAccessorType;
  import javax.xml.bind.annotation.XmlRootElement;
  import javax.xml.bind.annotation.XmlType;
  
  @XmlAccessorType(XmlAccessType.FIELD)
  @XmlType(name = "Sport", propOrder = {"sportsID","sportsName"})
  @XmlRootElement(name = "sport")   //Added by myself
  public class Sport
  {
      protected int sportsID;
      protected String sportsName;
  
      public int getSportsID() {return sportsID;}
      public void setSportsID(int value) {this.sportsID = value;}
  
      public String getSportsName() {return sportsName;}
      public void setSportsName(String value) {this.sportsName = value;}
  }
  </code></pre>
  
  <p>Direcly instantiating and marshalling works fine (<strong>Example1</strong>)</p>
  
  <pre><code>Sport sport = new Sport();
  sport.setSportsID(1);
  sport.setSportsName("test");
  
  JAXBContext jc = JAXBContext.newInstance(Sport.class);
  jc.createMarshaller().marshal(sport,System.out);
  </code></pre>
  
  <p>Now lets create the object inside a webservice call:</p>
  
  <pre><code>SportsdataSoap s = new Sportsdata().getSportsdataSoap();
  ArrayOfSport sports = s.getAvailSports();
  
  for(Sport sport : sports.getSport())
  {
      JAXBContext jc = JAXBContext.newInstance(Sport.class);
      jc.createMarshaller().marshal(sport,System.out);
  }
  </code></pre>
  
  <p>Then I got this exception:</p>
  
  <pre><code>Exception in thread "main" java.lang.ClassCastException: my.package.Sport$JaxbAccessorF_sportsID cannot be cast to com.sun.xml.bind.v2.runtime.reflect.Accessor
      at com.sun.xml.bind.v2.runtime.reflect.opt.OptimizedAccessorFactory.instanciate(OptimizedAccessorFactory.java:199)
      at com.sun.xml.bind.v2.runtime.reflect.opt.OptimizedAccessorFactory.get(OptimizedAccessorFactory.java:191)
      at com.sun.xml.bind.v2.runtime.reflect.Accessor$FieldReflection.optimize(Accessor.java:282)
      at com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.&lt;init&gt;(SingleElementNodeProperty.java:94)
      at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
      at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
      at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
      at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
      at com.sun.xml.bind.v2.runtime.property.PropertyFactory.create(PropertyFactory.java:128)
      at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.&lt;init&gt;(ClassBeanInfoImpl.java:183)
      at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getOrCreate(JAXBContextImpl.java:526)
      at com.sun.xml.bind.v2.runtime.JAXBContextImpl.&lt;init&gt;(JAXBContextImpl.java:341)
      at com.sun.xml.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1158)
      at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:140)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
      at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:202)
      at javax.xml.bind.ContextFinder.find(ContextFinder.java:363)
      at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:574)
      at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:522)
      at my.package.TestOpenLiga.testDisciplines(TestOpenLiga.java:48)
      at my.package.TestOpenLiga.main(TestOpenLiga.java:130)
  </code></pre>
  
  <p>How to deal with this? Thank you, Thor.</p>
  
  <p><strong>Update 2</strong> If I modify <strong>Example1</strong> to this, I get the same error</p>
  
  <pre><code>SportsdataSoap s = new Sportsdata().getSportsdataSoap();
  
  Sport sport = new Sport();
  sport.setSportsID(1);
  sport.setSportsName("test");
  
  JAXBContext jc = JAXBContext.newInstance(Sport.class);
  jc.createMarshaller().marshal(sport,System.out);
  </code></pre>
  
  <p><strong>Update 2</strong> XML structure of sport</p>
  
  <pre><code>&lt;Sport&gt;
    &lt;sportsID&gt;int&lt;/sportsID&gt;
    &lt;sportsName&gt;string&lt;/sportsName&gt;
  &lt;/Sport&gt;
  </code></pre>