Pages: 1
- Sujet précédent - [Arcgis Server 9.2 java] Exception DCOM lors de la creation d'un objet - Sujet suivant
#1 Wed 30 May 2007 09:44
- mickdep
- Participant occasionnel
- Date d'inscription: 23 May 2007
- Messages: 13
[Arcgis Server 9.2 java] Exception DCOM lors de la creation d'un objet
Bonjour,
Je développe une tâche spécifique pour Arcgis server 9.2 version java avec eclipse 3.2.2.
Lorsque je crée un objet "QueryFilter", diverses exceptions sont générées en fonction de la façon dont je crée l'objet.
Si j'utilise QueryFilter filter = new QueryFilter(); , j'obtiens
"The DCOM connection to the remote object has been disconnected (waitForResponse)"
ou bien
"Unable to establish RPC Connection to DCOM SCM on 127.0.0.1 (Bind returned Bind_NAK)"
Par contre, si j'utilise IQueryFilter filter = new QueryFilter(); , j'obtiens
"AutomationException: Class not registered"
ou bien
"Unable to establish RPC Connection to DCOM SCM on 127.0.0.1 (Bind returned Bind_NAK)"
Est-ce que quelqu'un à déjà rencontré et résolu ce genre de problème?
Merci d'avance pour votre aide.
miKL
Hors ligne
#2 Wed 30 May 2007 11:39
- janyv
- Participant assidu
- Lieu: Montreuil, France
- Date d'inscription: 8 Feb 2006
- Messages: 356
Re: [Arcgis Server 9.2 java] Exception DCOM lors de la creation d'un objet
Bonjour,
Peut-être vais-je être à côté de la plaque mais tant pis, au moins j'aurais essayé : as-tu essayé de créer ton objet en passant par les proxies, par exemple :
IQueryFilter pQF = null;
pQF = new IQueryFilter2Proxy();
bon courage,
yvan.
PS : pourrais-tu me tenir au courant de la suite ?
Dernière modification par janyv (Wed 30 May 2007 11:46)
Si tu ne sais pas demande, si tu sais partage
Hors ligne
#3 Wed 30 May 2007 14:29
- mickdep
- Participant occasionnel
- Date d'inscription: 23 May 2007
- Messages: 13
Re: [Arcgis Server 9.2 java] Exception DCOM lors de la creation d'un objet
Merci pour ta réponse.
Avec ton code, je n'ai pas d'exception lors de la création de l'objet, je croyais donc que le problème était réglé.
Mais lorsque je veux utiliser l'objet (pour definir la clause where 'setWhereClause' par exemple), j'ai une exception pointeur null.
Le problème a peut-être la même cause que pour la création de l'objet 'QueryFilter'.
Je suis un nouvel utilisateur des arcobjects, donc si vous avez d'autres pistes, elles seront les bien venues.
Merci pour votre aide.
miKL
Hors ligne
#4 Wed 30 May 2007 14:47
- janyv
- Participant assidu
- Lieu: Montreuil, France
- Date d'inscription: 8 Feb 2006
- Messages: 356
Re: [Arcgis Server 9.2 java] Exception DCOM lors de la creation d'un objet
hoho, çà plante aussi chez moi... je cherche ... il faut sans doute fournir quelque chose à IQueryFilterProxy() pour créer l'objet distant ...
Dernière modification par janyv (Wed 30 May 2007 15:57)
Si tu ne sais pas demande, si tu sais partage
Hors ligne
#5 Thu 31 May 2007 08:27
- mickdep
- Participant occasionnel
- Date d'inscription: 23 May 2007
- Messages: 13
Re: [Arcgis Server 9.2 java] Exception DCOM lors de la creation d'un objet
J'ai essayé le code suivant:
Code:
IQueryFilter filter = null; ServerObjectFactory sof = new ServerObjectFactory(); filter=new IQueryFilterProxy(sof.createServerObject(QueryFilter.getClsid(),mapServer.getDefaultMapName(), "NTWSIGDPAE01"));
Lors de la création de l'objet 'ServerObjectFactory', j'ai de nouveau l'exception "AutomationException: Class not registered".
Je reviens donc au même point.
Hors ligne
#6 Thu 31 May 2007 09:38
- janyv
- Participant assidu
- Lieu: Montreuil, France
- Date d'inscription: 8 Feb 2006
- Messages: 356
Re: [Arcgis Server 9.2 java] Exception DCOM lors de la creation d'un objet
Hello !
J'ai réessayé en utilisant le package com.esri.arcgisws (API SOAP) au lieu de com.esri.arcgis.geodatabase :
QueryFilter pQF = new QueryFilter();
pQF.setWhereClause("CHAMP = 'Valeur'");
et çà ne plante pas ... reste à savoir si on peut faire la même chose avec cet objet venant d'arcgisws plutôt que de geodatabase mais c'est déjà un début !
à +
yvan.
Dernière modification par janyv (Thu 31 May 2007 10:29)
Si tu ne sais pas demande, si tu sais partage
Hors ligne
#7 Thu 31 May 2007 13:32
- mickdep
- Participant occasionnel
- Date d'inscription: 23 May 2007
- Messages: 13
Re: [Arcgis Server 9.2 java] Exception DCOM lors de la creation d'un objet
Merci pour cette piste.
Malheureusement, j'ai besoin de l'objet du package com.esri.arcgis.geodatabase car c'est pour effectuer une selection sur une table autonome (StandaloneTable.selectRows()).
Mon stage se terminant demain je n'ai plus le temps de chercher.
Mais si tu trouve la solution, je serai quand même content de la connaitre.
Merci pour ton aide.
miKL
Hors ligne
#8 Thu 31 May 2007 14:56
- janyv
- Participant assidu
- Lieu: Montreuil, France
- Date d'inscription: 8 Feb 2006
- Messages: 356
Re: [Arcgis Server 9.2 java] Exception DCOM lors de la creation d'un objet
MiKL,
Effectivement, la classe com.esri.arcgisws.QueryFilter ne fait pas l'affaire, scrongneugneu !
Après avoir (re)farfouillé la doc, j'ai écrit le code ci-après qui sélectionne une entité d'une classe d'entités à partir de la valeur d'un champ (ici OBJECTID) (mais çà doit fonctionner pareil avec Itable et IRow pour une table standalone) :
Code:
IServerObjectManager pSOM = null; IServerContext pServCtx = null; IFeatureClass pFC = null; IFeatureLayer pFL = null; IFeatureCursor pFCur = null; IFeature pFeat = null; WebMap theMap = webContext.getWebMap(); AGSMapResource mapResource = (AGSMapResource)webContext.getResources().get("ags1"); AGSLocalMapResource localMapResource = (AGSLocalMapResource)mapResource; MapServer mapServer = (MapServer)localMapResource.getLocalMapServer(); pServCtx = localMapResource.getServerContext(); IMap laMap = mapServer.getMap(mapServer.getDefaultMapName()); IEnumLayer theLayers = laMap.getLayers(null, true); theLayers.reset(); ILayer theCurrentLayer = theLayers.next(); while (theCurrentLayer != null) { if (theCurrentLayer.getName().equalsIgnoreCase("Nom_Couche")) { pFL = (IFeatureLayer)theCurrentLayer; pFC = pFL.getFeatureClass(); IQueryFilter pQF = new QueryFilter(pServCtx.createObject(QueryFilter.getClsid())); pQF.setWhereClause("OBJETCID = 1"); pFCur = pFC.search(pQF, false); pFeat = pFCur.nextFeature(); if (pFeat != null) { System.out.println("Trouvé"); } else { System.out.println("Bizarre, non trouvé"); } theCurrentLayer = null; } else theCurrentLayer = theLayers.next(); }
Cette fois, c'est le package esri.com.geodatabase qui est utilisé pour l'objet QueryFilter créé.
Pour Eclipse, l'instruction IQueryFilter pQF = new QueryFilter(pServCtx.createObject(QueryFilter.getClsid())); est dite "deprecated" mais çà ne plante pas...
à +
yvan.
Dernière modification par janyv (Thu 31 May 2007 15:10)
Si tu ne sais pas demande, si tu sais partage
Hors ligne
#9 Thu 31 May 2007 15:49
- janyv
- Participant assidu
- Lieu: Montreuil, France
- Date d'inscription: 8 Feb 2006
- Messages: 356
Re: [Arcgis Server 9.2 java] Exception DCOM lors de la creation d'un objet
MiKL,
Je suis un benêt !
au lieu de IQueryFilter pQF = new QueryFilter(pServCtx.createObject(QueryFilter.getClsid()));
l'instruction IQueryFilter pQF = (IQueryFilter)pServCtx.createObject(QueryFilter.getClsid()); est bien mieux et plus de "deprecated" (Merci à mon grand gourou Vince de m'avoir mis sur la bonne voie !)
à +
yvan.
Si tu ne sais pas demande, si tu sais partage
Hors ligne
Pages: 1
- Sujet précédent - [Arcgis Server 9.2 java] Exception DCOM lors de la creation d'un objet - Sujet suivant