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

Format d'échange (XML, JSON...) Java Discussion :

Erreur ’injection de ressources dans le bean


Sujet :

Format d'échange (XML, JSON...) Java

  1. ###raw>post.musername###
    Candidat au Club
    Erreur ’injection de ressources dans le bean
    Bonjour à tous,

    Je débute dans la programmation JSF. Ici j'essaie de récupérer des données d'un fichier xml afin de placer des markers sur une carte.

    J'utilise JAXB pour la "gestion" des données dans l'xml.
    Lors de la génération de mon code, j'obtiens l'erreur : "Erreur lors de l’injection de ressources dans le bean géré «markersView»"

    Je ne sais pas exactement quelle partie du code pourrait être utile à la résolution de mon problème donc je vais mettre mon beanmarkersView et au besoin, n'hésitez pas à me demander d'autres parties de mon code.

    markersView :

    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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    package beanMarker;
     
    import generated.Carto;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import javax.inject.Named;
    import javax.enterprise.context.Dependent;
    import java.io.Serializable;
    import java.util.List;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.annotation.PostConstruct;
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.ViewScoped;
    import javax.xml.bind.JAXBContext;
    import javax.xml.bind.JAXBException;
    import javax.xml.bind.Unmarshaller;
     
    import org.primefaces.event.map.OverlaySelectEvent;
    import org.primefaces.model.map.DefaultMapModel;
    import org.primefaces.model.map.LatLng;
    import org.primefaces.model.map.MapModel;
    import org.primefaces.model.map.Marker;
     
    /**
     *
     * @author Jérôme
     */
    @Named(value = "MarkersView")
    @Dependent
    @ManagedBean
    @ViewScoped
    public class MarkersView implements Serializable {
     
        private MapModel advancedModel;
        private Marker marker;
     
        String coordNumber = "coord";
     
        /*public MarkersView() throws JAXBException, FileNotFoundException {
            JAXBContext jc= JAXBContext.newInstance(generated.ObjectFactory.class);
            Unmarshaller u = jc.createUnmarshaller();
            Carto carto
                    = (Carto) u.unmarshal(new FileInputStream("C:\\Users\\Jérôme\\Documents\\EPSI I4\\WebServices - MARTHOS Lucien\\Applications\\2-TP1\\carto.xml"));
            List markers = (List) carto.getMarkers();
            for(int i=0; i < markers.size(); i++) {
                Marker markerUnique = (Marker) markers.get(i);
            }
        }*/
     
        @PostConstruct
        public void init() {
            try {
                advancedModel = new DefaultMapModel();
     
                JAXBContext jc = JAXBContext.newInstance(generated.ObjectFactory.class);
     
                Unmarshaller u = jc.createUnmarshaller();
     
                Carto carto = (Carto) u.unmarshal(new FileInputStream("C:\\Users\\Jérôme\\Documents\\EPSI I4\\WebServices - MARTHOS Lucien\\Applications\\2-TP1\\carto.xml"));
     
                List markers = (List) carto.getMarkers().getMarker();
     
                for(int i=0; i < markers.size(); i++) {
                    coordNumber = coordNumber+i;
                    System.out.println(coordNumber);
     
                    marker = (Marker) markers.get(i);
                    LatLng coordNumber = new LatLng(marker.getLatlng().getLat(),marker.getLatlng().getLng());
     
                    advancedModel.addOverlay(new Marker(coordNumber));
                }
     
     
     
     
                //coordonnées
                //LatLng coord1 = new LatLng(48.8613, 2.32442);
                //LatLng coord2 = new LatLng(48.8371336894515, 2.37434055460561);
     
                //basic marker
                //advancedModel.addOverlay(new Marker(coord1, "Port Solferino"));
                //advancedModel.addOverlay(new Marker(coord2, "Quai Mauriac / Pont de Bercy"));
            } catch (JAXBException ex) {
                Logger.getLogger(MarkersView.class.getName()).log(Level.SEVERE, null, ex);
            } catch (FileNotFoundException ex) {
                Logger.getLogger(MarkersView.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
     
        public MapModel getAdvancedModel() {
            return advancedModel;
        }
     
        public void onMarkerSelect(OverlaySelectEvent event) {
            marker = (Marker) event.getOverlay();
        }
     
        public Marker getMarker() {
            return marker;
        }
    }


    Merci d'avance pour votre aide et vos conseils
      0  0

  2. #2
    Candidat au Club
    Update
    Je me suis rendu compte que dans mon index.xhtml j'appelais mon bean avec "markersView" et non avec "MarkersView". J'ai donc fait les modifications nécessaires mais j'obtiens maintenant cette erreur : "WELD-000049: Unable to invoke public void beanMarker.MarkersView.init() on beanMarker.MarkersView@18653830"

    La stack trace :
    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
    76
    77
    org.jboss.weld.exceptions.WeldException: WELD-000049: Unable to invoke public void beanMarker.MarkersView.init() on beanMarker.MarkersView@18653830
    	at org.jboss.weld.injection.producer.DefaultLifecycleCallbackInvoker.invokeMethods(DefaultLifecycleCallbackInvoker.java:100)
    	at org.jboss.weld.injection.producer.DefaultLifecycleCallbackInvoker.postConstruct(DefaultLifecycleCallbackInvoker.java:81)
    	at org.jboss.weld.injection.producer.BasicInjectionTarget.postConstruct(BasicInjectionTarget.java:126)
    	at org.jboss.weld.bean.ManagedBean.create(ManagedBean.java:162)
    	at org.jboss.weld.context.unbound.DependentContextImpl.get(DependentContextImpl.java:69)
    	at org.jboss.weld.bean.ContextualInstanceStrategy$DefaultContextualInstanceStrategy.get(ContextualInstanceStrategy.java:101)
    	at org.jboss.weld.bean.ContextualInstance.get(ContextualInstance.java:50)
    	at org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:761)
    	at org.jboss.weld.el.AbstractWeldELResolver.lookup(AbstractWeldELResolver.java:120)
    	at org.jboss.weld.el.AbstractWeldELResolver.getValue(AbstractWeldELResolver.java:90)
    	at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:188)
    	at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
    	at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
    	at com.sun.el.parser.AstIdentifier.getValue(AstIdentifier.java:116)
    	at com.sun.el.parser.AstValue.getBase(AstValue.java:151)
    	at com.sun.el.parser.AstValue.getValue(AstValue.java:200)
    	at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:226)
    	at org.jboss.weld.el.WeldValueExpression.getValue(WeldValueExpression.java:50)
    	at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
    	at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
    	at org.primefaces.component.gmap.GMap.getModel(GMap.java:113)
    	at org.primefaces.component.gmap.GMapRenderer.encodeOverlays(GMapRenderer.java:123)
    	at org.primefaces.component.gmap.GMapRenderer.encodeScript(GMapRenderer.java:87)
    	at org.primefaces.component.gmap.GMapRenderer.encodeEnd(GMapRenderer.java:51)
    	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:920)
    	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863)
    	at javax.faces.render.Renderer.encodeChildren(Renderer.java:176)
    	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:890)
    	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856)
    	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
    	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
    	at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:458)
    	at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:134)
    	at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:337)
    	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
    	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
    	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:659)
    	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
    	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
    	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
    	at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
    	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:416)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:283)
    	at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
    	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
    	at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206)
    	at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180)
    	at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
    	at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
    	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:283)
    	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:200)
    	at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:132)
    	at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:111)
    	at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
    	at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:536)
    	at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
    	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
    	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
    	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
    	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:591)
    	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:571)
    	at java.lang.Thread.run(Thread.java:748)
    Caused by: java.lang.reflect.InvocationTargetException
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at org.jboss.weld.injection.producer.DefaultLifecycleCallbackInvoker.invokeMethods(DefaultLifecycleCallbackInvoker.java:98)
    	... 65 more
    Caused by: java.lang.ClassCastException: generated.Marker cannot be cast to org.primefaces.model.map.Marker
    	at beanMarker.MarkersView.init(MarkersView.java:73)
    	... 70 more

  3. ###raw>post.musername###
    Membre émérite
    Il se peut que vous avez quelque part les codes qui font le pont entre les données des markers dans carto.xml et la classe Marker de primefaces - c'est possible mais on ne sait pas d'une manière certaine. En tout cas, ce qu'on fait sortir via jaxb n'est pas de Marker de primefaces, mais de classe de generated.Marker. Les déclaration des variables devraient se faire avec des types pleinement qualifies pour le package "generated" pour Marker, Markers, sinon pour Carto, pour ne pas en conflit avec Marker, Markers,... de primefaces.
    Code java :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
    //...etc
        private generated.Marker marker;
        //etc...
        public void init() {
            //etc...
     
                generated.Carto carto = (generated.Carto) u.unmarshal(new FileInputStream("C:\\Users\\Jérôme\\Documents\\EPSI I4\\WebServices - MARTHOS Lucien\\Applications\\2-TP1\\carto.xml"));
     
                List<generated.Marker> markers = (List<generated.Marker>) carto.getMarkers().getMarker();
     
                //etc...
     
                   marker = (generated.Marker) markers.get(i);
     
            //etc...
        }
     
        //etc...

    Voilà ce que je peux déduire avec beaucoup d'extrapolation si ça fait au final apporter d'idée bien raisonnée.
      0  0

  4. #4
    Candidat au Club
    Citation Envoyé par tsuji Voir le message
    Merci tsuji. Visiblement le problème venait bien de ça.
    Voici le résultat ==>

    Ca me rassure de ne pas avoir eu un problème de logique. ^^'

    Bonne soirée à tous.
    Je clos le sujet