2013-03-26 61 views
0

我一直在使用websphere 7和jaxws進行web服務。 所以,如果我的web服務返回一個字符串,Integer和int或一個浮點數。當我部署它時,websphere可以識別我的web服務,但是如果我更改我的web服務以返回一個java bean;它不認可我的web服務。爲什麼不是websphere識別我的web服務

這是我的代碼。 接口:

import javax.jws.WebMethod; 
import javax.jws.WebService; 

@WebService 
public interface MensajeSMS { 
    @WebMethod 
    String sendMessage(Long idUsuario, String token, Integer idServicio, 
      String mensaje, String contacto, String idMensaje); 
} 

實現:

import javax.jws.WebService; 

@WebService(endpointInterface = "bisnet.sms.MensajeSMS") 
public class MensajeSMSImpl implements MensajeSMS { 

    @Override 
    public String sendMessage(Long idUsuario, String token, Integer idServicio, 
      String mensaje, String contacto, String idMensaje) { 
     return "Hola " + idUsuario +" "+ "tu token con Bisnet Corporativo será: " + token 
       +". El número telefónico que registraste es: " + idServicio 
       + " y tu nombre es: " +mensaje +" " +contacto+ " " +idMensaje ; 
    } 

} 

我的要求:

import javax.xml.bind.annotation.XmlAccessType; 
import javax.xml.bind.annotation.XmlAccessorType; 
import javax.xml.bind.annotation.XmlElement; 
import javax.xml.bind.annotation.XmlRootElement; 
import javax.xml.bind.annotation.XmlType; 

@XmlRootElement(name = "sendMessage", namespace = "http://sms.bisnet/") 
@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "sendMessage", namespace = "http://sms.bisnet/") 
public class SendMessage { 

    @XmlElement(name = "arg0", namespace = "") 
    private Long idUsuario; 

    @XmlElement(name = "arg1", namespace = "") 
    private String token; 

    @XmlElement(name = "arg2", namespace = "") 
    private Integer idServicio; 

    @XmlElement(name = "arg3", namespace = "") 
    private String mensaje; 

    @XmlElement(name = "arg4", namespace = "") 
    private String contacto; 

    @XmlElement(name = "arg5", namespace = "") 
    private String idMensaje; 

    /** 
    * @return the idUsuario 
    */ 
    public Long getIdUsuario() { 
     return idUsuario; 
    } 

    /** 
    * @param idUsuario the idUsuario to set 
    */ 
    public void setIdUsuario(Long idUsuario) { 
     this.idUsuario = idUsuario; 
    } 

    /** 
    * @return the token 
    */ 
    public String getToken() { 
     return token; 
    } 

    /** 
    * @param token the token to set 
    */ 
    public void setToken(String token) { 
     this.token = token; 
    } 

    /** 
    * @return the idServicio 
    */ 
    public Integer getIdServicio() { 
     return idServicio; 
    } 

    /** 
    * @param idServicio the idServicio to set 
    */ 
    public void setIdServicio(Integer idServicio) { 
     this.idServicio = idServicio; 
    } 

    /** 
    * @return the mensaje 
    */ 
    public String getMensaje() { 
     return mensaje; 
    } 

    /** 
    * @param mensaje the mensaje to set 
    */ 
    public void setMensaje(String mensaje) { 
     this.mensaje = mensaje; 
    } 

    /** 
    * @return the contacto 
    */ 
    public String getContacto() { 
     return contacto; 
    } 

    /** 
    * @param contacto the contacto to set 
    */ 
    public void setContacto(String contacto) { 
     this.contacto = contacto; 
    } 

    /** 
    * @return the idMensaje 
    */ 
    public String getIdMensaje() { 
     return idMensaje; 
    } 

    /** 
    * @param idMensaje the idMensaje to set 
    */ 
    public void setIdMensaje(String idMensaje) { 
     this.idMensaje = idMensaje; 
    } 

} 

,最後我的迴應:

import javax.xml.bind.annotation.XmlAccessType; 
import javax.xml.bind.annotation.XmlAccessorType; 
import javax.xml.bind.annotation.XmlElement; 
import javax.xml.bind.annotation.XmlRootElement; 
import javax.xml.bind.annotation.XmlType; 

@XmlRootElement(name = "sendMessageResponse", namespace = "http://sms.bisnet/") 
@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "sendMessageResponse", namespace = "http://sms.bisnet/") 
public class SendMessageResponse { 

    @XmlElement(name = "return", namespace = "") 
    private String _return; 

    /** 
    * 
    * @return 
    *  returns String 
    */ 
    public String getReturn() { 
     return this._return; 
    } 

    /** 
    * 
    * @param _return 
    *  the value for the _return property 
    */ 
    public void setReturn(String _return) { 
     this._return = _return; 
    } 

} 

方式it's現在工作,但如果我改變接口,實現和響應,所以他們返回一個java bean而不是一個字符串; websphere不會識別我的web服務,因此它不會顯示或生成wsdl。

有誰知道爲什麼會發生這種情況?

在此先感謝。

+0

JAX-WS運行時可以從新的bean定義中生成WSDL(您可以在控制檯輸出中看到這一點)?共享庫中的bean定義(Java類)在哪裏?如果您使用XML簡單類型,則JAXB註釋不是必需的。 – 2013-03-27 02:53:08

+0

如果部署它並嘗試在我的導航器中打開wsdl,但如果我的webservice返回一個對象,則不會顯示它。 – linker85 2013-03-27 15:20:03

+0

並且我還需要jax註釋,以便我可以在客戶端執行編組和解組。 – linker85 2013-03-27 15:20:46

回答

0

如果您的web服務或服務定義存在問題,WebSphere將在應用程序啓動過程中引發錯誤。通常你可以在你的SystemOut.log找到它。

如果您運行字符串版本,您應該找到一個日誌,該服務在同一個地點成功啓動。

相關問題