Question

Je crée un service Web simple SOAP. je suis pour qu'il fonctionne sur un service Web tomcat.

im essayant de mettre en œuvre ce avec JAX-WS (voir code)

ma question est: ce que le Endpoint.publish utilise le serveur tomcat pour accueillir cette ou est-ce un mini GlassFish type de serveur

?

i devrait prolongerons UnicastRemoveObject ou quelque chose de similaire à la place?

idéalement, il serait en mesure d'être emballé dans un .WAR et abandonné dans le répertoire et fonctionnent.

Il ne semble pas fonctionner avec mon serveur tomcat installé comme il est parce qu'il dit que le port est déjà utilisé. J'utilise Ubuntu karmique avec le package tomcat6 installé, il pourrait aussi être mon doesnt utilisateur dispose des autorisations de publier sur le tomcat en cours d'exécution sur 8080

J'espère que cette question est assez claire

exemple de code:

@WebService
public class UserAttributes {
    public static void main(String[] args) {
        UserAttributes instance = new UserAttributes();
        Endpoint.publish("http://localhost:8082/WebServices/userattributes", 
            instance);
    }

    public string Hello() {
       return "Hello World";
    }
}
Était-ce utile?

La solution

  

Est-ce que Endpoint.publish utiliser le serveur tomcat pour accueillir cette ou est-ce un mini GlassFish type de serveur?

JAX-WS RI API Endpoint.publish utilise par défaut un poids léger mise en œuvre serveur HTTP qui est inclus dans Java sE Sun 6. donc non, il ne pas utiliser un GlassFish embarqué ni Tomcat et encore moins votre Tomcat existant installation intégrée: il utilise un intégré conteneur à-dire quelque chose en cours d'exécution dans la même machine virtuelle Java. Juste Pour votre information, il est cependant possible de brancher d'autres mises en œuvre aussi longtemps qu'ils fournissent un (SPI) Mise en œuvre du fournisseur de services . Par exemple, la jetée 6 ne sorte, voir J2se6HttpServerSPI . Mais je ne vais pas couvrir ici tous les détails:)

  

Il ne semble pas fonctionner avec mon serveur tomcat installé comme il est parce qu'il dit que le port est déjà utilisé.

Comme je l'ai dit plus haut, l'API Enpoint.publish ne pas utiliser votre installation existante de Tomcat. Il utilise son propre serveur et vous permet de déployer votre service Web sans avoir à empaqueter et déployer votre application. Il est particulièrement utile au cours du développement (car elle accélère les choses). En fait, il est extrêmement pratique.

Maintenant, si vous avez un serveur Tomcat en cours d'exécution sur le port 8082 et si vous essayez de publier votre Endpoint en utilisant le même port, les choses ne fonctionnera pas comme vous avez remarqué. Utilisez un autre port (et inutilisé) au cours du développement.

Et si vous souhaitez déployer vos services Web à votre Tomcat installation existante, vous devrez les emballer dans une guerre et de déployer cette guerre sur Tomcat. Mais cela est tout à fait différent et n'a rien à voir avec l'aide de l'API Endpoint.publish.

Autres conseils

Très intéressant. Il me semble que le serveur embarqué contient également un moteur de savon pour traiter les messages soap envoyés à ce port. Est-ce aussi un moteur de savon intégré ou est-il en utilisant l'un des moteurs de savon populaires (axis2, CxF, métro)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top