banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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 smile

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 smile

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 smile

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 smile

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 smile

Hors ligne

 

Pied de page des forums

Powered by FluxBB