2010-10-21 41 views
0

Normalement, le WSIT-client.xml a des déclarations d'importation comme celle-ci:emplacement d'importation dans WSIT-client.xml de déposer dans un autre pot, en utilisant une chaîne d'URL pour localiser un fichier sur le chemin de classe

<import location="foo.xml" namespace="http://foo.org/" /> 

I » J'ai trouvé que leur peut être en ligne un wsit-client.xml sur le classpath/META-INF, mais puis-je faire référence à un fichier XML qui est situé dans un autre fichier jar dans ce wsit-client.xml? Quelque chose comme:

<import location="classPathResource/WEB-INF/foo.xml" namespace="http://foo.org/" /> 

Je voudrais créer un seul WSIT-client.xml qui contient les importations pour tous mes webservices mais je veux séparer la configuration pour tous les différents webservices pour différents projets.

+0

J'ai trouvé que l'ajout d'une barre oblique permet de rechercher des fichiers sur le chemin de classe, mais cela ne fonctionne pas avec /foo.xml ou /WEB-INF/foo.xml. J'ai également trouvé que l'emplacement utilise l'URL. –

Répondre

1

Je l'ai fixé en créant un URLStreamHandler dans le WSIT-client.xml Je peux maintenant définir l'emplacement = « myprotocol: //foo.xml »

Je l'ai utilisé le PathMatchingResourcePatternResolver de printemps pour localiser mon fichier xml dans un autre projet/pot.

public class Handler extends URLStreamHandler { 

@Override 
protected URLConnection openConnection(URL u) throws IOException { 
    PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); 
    final URL resourceUrl = resolver.getResource(u.getPath()).getURL(); 
    if (resourceUrl == null) { 
     throw new IOException(String.format("File %s not found on the classpath", u.getFile())); 
    } 
    return resourceUrl.openConnection(); 
} 
} 

Je ne suis pas en utilisant les arguments VM pour définir le gestionnaire, mais je l'ai mis en place un URLStreamHandlerFActory comme expliqué ici URL to load resources from the classpath in Java

Plus d'informations sur l'écriture de vos propres gestionnaires de protocole peut être trouver sur ce site: J'ai encore 1 projet qui contient le single wsit-client.xml avec des références à toutes mes configurations de service web, mais au moins j'ai réussi à séparer la configuration pour tous les différents services dans différents projets maven .