IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Services Web Java Discussion :

Custom Exception dans un webservice


Sujet :

Services Web Java

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2009
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2009
    Messages : 122
    Points : 128
    Points
    128
    Par défaut Custom Exception dans un webservice
    Bonjour tout le monde,

    Bon je vais essayer d'être le plus clair possible.

    Je voudrais mettre en place un mécanisme d'exception dans mon webservice qui retournerais une SOAPFault à mon client.

    Donc j'ai mis en place la classe d'exception ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    package fr.cea.ws.exception;
     
    import javax.xml.ws.WebFault;
     
    /**
     * The CEAException class.
     */
    @WebFault(name="CEAFault", targetNamespace = "http://server.ws.cea.fr/fault/")
    public class CEAException extends Exception {
     
        private static final long serialVersionUID = -7758655883843742158L;
        private CEAFault fault;
     
        public CEAException(){
        }
        /**
         * @param fault
         */
        protected CEAException(CEAFault fault){
            super(fault.getCeaFaultString());
            this.fault = fault;
        }
        /**
         * @param message
         * @param faultInfo
         */
        public CEAException(String message, CEAFault faultInfo){
            super(message);
            this.fault = faultInfo;
        }
        /**
         * @param message
         * @param faultInfo
         * @param cause 
         */
        public CEAException(String message, CEAFault faultInfo, Throwable cause){
            super(message, cause);
            this.fault = faultInfo;
        }
        /**
         * @return 
         */
        public CEAFault getFaultInfo(){
            return fault;
        }
        /**
         * @param message 
         */
        public CEAException(String message){
            super(message);
        }
        /**
         * @param code
         * @param message 
         */
        public CEAException(String code, String message){
            super(message);
            this.fault = new CEAFault();
            this.fault.setCeaFaultString(message);
            this.fault.setCeaFaultCode(code);
        }
        /**
         * @param cause 
         */
        public CEAException(Throwable cause){
            super(cause);
        }
        /**
         * @param message
         * @param cause 
         */
        public CEAException(String message, Throwable cause){
            super(message, cause);
        }    
    }
    A coté de cette classe j'ai développé le bean :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    package fr.cea.ws.exception;
    /**
     * The CeaFault class.
     * 
     * @version 1.0
     */
    public class CEAFault{
     
        /**
         * Fault code
         */
        private String ceaFaultCode;
        /**
         * Fault String
         */
        private String ceaFaultString;
     
        /**
         * @return the faultCode
         */
        public String getCeaFaultCode(){
            return ceaFaultCode;
        }
        /**
         * @param faultCode the faultCode to set
         */
        public void setCeaFaultCode(String ceaFaultCode){
            this.ceaFaultCode = ceaFaultCode;
        }
        /**
         * @return the faultString
         */
        public String getCeaFaultString(){
            return ceaFaultString;
        }
        /**
         * @param ceaFaultString the faultString to set
         */
        public void setCeaFaultString(String ceaFaultString){
            this.ceaFaultString = ceaFaultString;
        }
    }
    et voici le bout de code qui est censé lancé mon exception (j'ai enlevé du code et j'ai juste mis la boucle qui lance mon exception):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    package fr.cea.ws.server;
     
    //Service Implementation
    @WebService(endpointInterface = "fr.cea.ws.server.CorrectCEAInterface")
    public class CorrectCEAImpl implements CorrectCEAInterface{
     
        public static final String FORMAT_DATE_BASE = "yyyy-MM-dd HH:mm:ss";
        private static final Logger logger = Logger.getLogger(CorrectCEAImpl.class.getName());
     
    	@Override
    	public String getHelloWorldAsString(String name) {
    		return "Hello World JAX-WS toto " + name;
    	}
     
        @Override
        public List<HashMapWrapper> getCorrectValue(List<HashMapWrapper> data, 
                String startDate, 
                String endDate, 
                String dataType, 
                int isCompressed, 
                int pollingDelay) throws CEAException {
     
            logger.log(Level.DEBUG, "Entering getCorrectValue");
     
                for (Iterator ot = listData.iterator();ot.hasNext();){
                    HashMapWrapper wrap = new HashMapWrapper();
                    Datum um = (Datum)ot.next();
                    wrap.setKey(sdf.format(um.getDate()));
     
                    //gestion des NaN dans le retour de l'algo du cea
                    if( !(Math.abs(um.getValue()) >= 0) ){
                        throw new CEAException("A NaN value still exist in the list");
                    }
                    wrap.setValue(um.getValue());
                    listWrap.add(wrap);
                }
     
                return listWrap;
     
            } catch (ParseException | WrongDateException  ex) {
                logger.log(Level.ERROR, ex);
            } catch (CEAException ex){
     
                throw ex;
            } catch(Exception ex){
                logger.log(Level.ERROR, ex);
            }
            return listWrap;
        }
    }
    Le problème est quand je tombe dans le cas ou mon exception est lancée, j'ai cette erreur qui surgit de nulle part :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Exception in thread "main" java.lang.ExceptionInInitializerError
    	at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:107)
    	at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:78)
    	at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:129)
    	at com.sun.proxy.$Proxy32.getCorrectValue(Unknown Source)
    	at fr.powergridprod.core.PowergridProdCore.execute(PowergridProdCore.java:271)
    	at fr.powergridprod.core.PowergridProdCore.main(PowergridProdCore.java:608)
    Caused by: java.lang.ClassCastException: com.sun.xml.bind.v2.runtime.JAXBContextImpl cannot be cast to com.sun.xml.internal.bind.api.JAXBRIContext
    	at com.sun.xml.internal.ws.fault.SOAPFaultBuilder.<clinit>(SOAPFaultBuilder.java:550)
    	... 6 more
    Java Result: 1
    Je pense avoir un problème avec mes annotations dans l'exception mais après moult essaie j'ai toujours le même problème

    Si quelqu'un à une petite idée je suis preneur, parce que là je sèche completement.

    Merci d'avance
    Quand on va de l'avant on avance !!!!

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2009
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2009
    Messages : 122
    Points : 128
    Points
    128
    Par défaut
    Le problème est enfin résolu, il s'agissait d'un problème avec les librairies JAX, j'ai rajouter les dernières version dans mon répertoire JAVA_HOME et tout est rentré dans l'order.
    Quand on va de l'avant on avance !!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Exception dans un webservice (appel depuis silverlight)
    Par boby62423 dans le forum Services Web
    Réponses: 3
    Dernier message: 19/06/2009, 08h48
  2. BPEL : Relever une exception définie dans un WebService
    Par RudyWI dans le forum Services Web
    Réponses: 0
    Dernier message: 18/05/2009, 11h10
  3. Exception dans un webservice -> erreur 404 coté client
    Par boby62423 dans le forum Services Web
    Réponses: 0
    Dernier message: 14/04/2009, 19h16
  4. Capture d'exception dans un constructeur
    Par declencher dans le forum Composants VCL
    Réponses: 8
    Dernier message: 03/02/2004, 12h52
  5. Réponses: 2
    Dernier message: 28/08/2003, 00h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo