2010-07-15 16 views
6

J'ai un EJB retourner une liste de mes ValidationMessage objets:weblogic APPC: inclure des arguments génériques dans le pot client ejb

@Remote 
public interface Intf { 
    List<ValidationMessage> validateFile(); 
} 

Je suis générer client EJB JAR avec APPC utilitaire de weblogic. Le problème est qu'il n'inclut pas la classe ValidationMessage dans le fichier JAR client. Peut-être ne voit-il pas la dépendance à cette classe parce qu'elle ne regarde que le code compilé, lorsque les informations génériques sont déjà effacées.
Si j'ajoute une autre méthode factice, qui renvoie directement cette classe à l'interface, tout va bien. Ma question est: est-il un moyen de résoudre ce problème sans ajouter une méthode fictive? Y at-il un moyen de contrôler ce qui est inclus par appc dans le client JAR?

Répondre

0

Ce n'est pas et la réponse réelle et je n'ai aucune connaissance de WebLogic ou de l'utilitaire appc.

Cela ressemble à un problème d'effacement de génériques. Le type de retour réel de la méthode validateFile() est le type brut List; Bien qu'il y ait des informations supplémentaires dans le classfile pour reconstruire les paramètres de type, certains outils ne les vérifient pas.

Je prédis que ce problème disparaîtra si vous faites également référence à la classe manquante dans un paramètre de méthode.

+0

qui est exactement ce que je l'ai écrit dans la question: c'est un problème d'effacement des génériques et il ne disparaîtra si vous ajoutez une méthode factice faisant référence cette classe. – unbeli

0

J'ai eu un problème simialr avec appc où je voulais remplacer certains des POJOS générés pour le client JAX-WS.

J'ai utilisé cette option (-output) pour générer la sortie vers un explosé répertoire au lieu d'un client jar.Do une copie ant de vos fichiers .class nécessaires dans le répertoire client et créer un pot de votre propre.

Vous pouvez voir cette option si vous 'java weblogic.appc' exécuter setEnv.cmd

-output Indique une archive de sortie alternatif ou répertoire. Si elle n'est pas définie, la sortie sera placée dans l'archive ou le répertoire source.

vérifier si cela fonctionne