1 Reply Latest reply on Jan 5, 2007 4:53 PM by david.k.win

    javax.xml.bind.annotation annotations all being ignored

    hitman_in_wis

      Hi, my name is Brett, and my company is pretty new to java web services, but we need to use them to communicate between PowerBuilder and EJB3.

      As far as I can tell, it looks like the annotations from the javax.xml.bind.annotation are being completely ignored in our deployed web services. Below is an example:

      The web service class...

      package com.nsighttel.ejb.services.validation.creditcard;
      
      import java.io.Serializable;
      
      import javax.ejb.Stateless;
      import javax.jws.WebMethod;
      import javax.jws.WebParam;
      import javax.jws.WebService;
      import javax.jws.soap.SOAPBinding;
      
      import com.nsighttel.domain.MonthYearWS;
      
      @Stateless
      @WebService
      @SOAPBinding(style = SOAPBinding.Style.RPC, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
      public class CreditCardVerificationServiceWS implements Serializable {
       private static final long serialVersionUID = 1L;
      
       @WebMethod
       public int isValid(
       @WebParam(name = "cardExp")MonthYearWS cardExpWS
       ){
       return 1;
       }
      
      }
      


      And the class for the WebParam...
      package com.nsighttel.domain;
      
      import java.io.Serializable;
      import javax.xml.bind.annotation.XmlAccessorType;
      import javax.xml.bind.annotation.XmlTransient;
      import javax.xml.bind.annotation.XmlAccessType;
      
      @XmlAccessorType(XmlAccessType.FIELD)
      public class MonthYearWS implements Serializable {
       private static final long serialVersionUID = 1L;
       private Boolean isNull;
       private Integer month;
       private Integer year;
       @XmlTransient private MonthYear obj;
      
      
       public MonthYearWS(Boolean isNull, Integer month, Integer year) {
       this.isNull = isNull;
       this.month = month;
       this.year = year;
       if (isNull == null || !isNull){
       obj = new MonthYear(month,year);
       }
       }
      
       public Boolean getIsNull() {
       return isNull;
       }
      
       public void setIsNull(Boolean isNull) {
       this.isNull = isNull;
       }
      
       public Integer getMonth() {
       return month;
       }
      
       public void setMonth(Integer month) {
       this.month = month;
       }
      
       public Integer getYear() {
       return year;
       }
      
       public void setYear(Integer year) {
       this.year = year;
       }
      
       @XmlTransient
       public MonthYear getObj(){
       return obj;
       }
      
       public void setObj(MonthYear obj){
       this.obj = obj;
       }
      }
      



      No matter what annotations I use, I get isNull, month, year, and obj all in my WSDL file for the above web service. The @XmlTransient annotation on the getObj() function is not being honored, as I am still getting obj in the WSDL file. Furthermore, if I take away all of the public getter functions, then I get no elements in my WSDL file. Therefore, the @XmlAccessorType(XmlAccessType.FIELD) is not being honored either.

      I have tried a few other annotations from the javax.xml.bind.annotation package, but none of them appear to be working either.

      Could someone please clue me in to what I may be doing wrong? Does Jboss not support these annotations? Or maybe the annotations do not apply to web services?

      Any help is greatly appreciated.
      Thanks!
      -Brett Birschbach