2011-06-29 4 views
6

Wygenerowane klasy z mojego WSDL przy użyciu wsimport nie mają metod equals() i hashcode(). W jaki sposób można dostosować i wygenerować klasy klientów, aby uzyskać metody equals() i hashcode().Jak generować metody equals() i hashcode() za pomocą wsimport w jaxws

Nie jestem pewien, czy użyć JAXB, aby to osiągnąć.

W kodzie generowanym przez Axis2.0 generowane są te metody, ale nie wiadomo, dlaczego taka podstawowa funkcja nie jest dostępna w JAXWS!

Odpowiedz

1

Więcej informacji o tym, jak to działało. Muszę dodać ścieżkę Classpath do jaxb2-commons, bez której wsimport działa bez narzekania, ale nic się nie dzieje! Po dodaniu ścieżki klasy jak poniżej

<path id="jaxb2-commons.classpath"> 
    <fileset dir="${dir.toolchain}/noarch/jaxb2-basics-dist-0.6.0"> 
     <include name="**/*.jar" /> 
    </fileset> 
</path> 

poniżej wsimport pracował jako oczekiwanego

<wsimport wsdl="@{dir-wsdl}/@{name-wsdl}" 
      taskname="[email protected]{service}" 
      destdir="@{dest-dir}" 
      sourcedestdir="@{source-dest-dir}" 
      package="@{package}" 
      keep="@{keep}" 
      verbose="@{verbose}" 
      xdebug="@{xdebug}" 
      xnocompile="@{xnocompile}" 
      target="2.1"> 
    <binding dir="@{dir-wsdl}" includes="[email protected]{name-wsdl}.xml, bindings-sche[email protected]{name-wsdl}.xml" /> 
    <xjcArg value="-Xequals" /> 
    <xjcArg value="-XhashCode" /> 
    <xjcArg value="-XtoString" /> 
    <!-- Generates per-package jaxb.index file which lists all of the schema-derived classes in this package.--> 
    <xjcArg value="-Xjaxbindex" /> 
    <xjcArg value="-Xsetters" /> 
</wsimport> 
+1

Byłoby pomocne, gdybyś podał * jak * dodałeś ścieżkę klas do wsimport. – Isaac

1

Jeśli szukasz wygenerować hashcode() i equals() za pomocą wsimport w Maven, sprawdź tę odpowiedź, w jaki sposób generowanie wartości konstruktorów, ale obejmuje również konfigurację do generowania hashcode() i equals() za:

How do I make wsimport generate constructors?