Ajuda em webservices (tomcat)

5 respostas
P

Viva!

Estou com um problema, e queria pedir ajuda à comunidade:

Tenho um web service a funcionar em glassfish, e preciso urgentemente de o passar para um servidor tomcat.

Para ser mais especifico, o webservice é um implementação da api jsr264. O módulo de webservice é constituido pelos seguintes ficheiros:

.META-INF
      context.xml
      MANIFEST.MF
 .WEB-INF
      -classes
      -META-INF
      config_wsdl.xml
      jaxrpc-ri-runtime.xml
      jaxrpc-ri.xml
      jboss-web.xml
      sun-web.xml
      web-before.xml
      web.xml

Conteudo do ficheiro jaxrpc-ri.xml:

<webServices
    xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/dd"
    version="1.0"
    targetNamespaceBase="http://ossj.org/xml/om/ri/wsdl"
    typeNamespaceBase="http://ossj.org/xml/om/ri/types"
    urlPatternBase="/jaxrpc">

    <endpoint
        name="OrderManagement_JVTSessionWebService"
        displayName="Order Management Web Service"
        description="Order Management Web Service Reference Implementation"
        interface="ossj.om.ri.ws.JVTOrderManagementSessionWSPort"
        implementation="ossj.om.ri.ws.JVTOrderManagementSessionWSPortImpl"
        model="/WEB-INF/model.gz"
        wsdl="/WEB-INF/wsdl/OrderManagement/v1-0/OSSJ-OrderManagement-v1-0.wsdl"/>

    <endpointMapping
        endpointName="OrderManagement_JVTSessionWebService"
        urlPattern="/JVTOrderManagementSession"/>

</webServices>

Conteudo do ficheiro jaxrpc-ri-runtime.xml:

<endpoints xmlns='http://java.sun.com/xml/ns/jax-rpc/ri/runtime' version='1.0'>
  <endpoint
    name='OrderManagement_JVTSessionWebServices'
    interface='java.rmi.Remote'
    implementation='ossj.om.ri.ws.RemoteImpl'
    tie='ossj.om.ri.ws.JVTOrderManagementSessionWSPort_Tie'
    model='/WEB-INF/model.gz'
    wsdl='/WEB-INF/wsdl/OrderManagement/v1-0/OSSJ-OrderManagement-v1-0.wsdl'
    service='{ossj_om}JVTOrderManagementSessionWebService'
    port='{ossj_om}JVTOrderManagementSessionWSPort'
    urlpattern='/JVTOrderManagementSession'/>
  <endpoint
    name='OrderManagement_NotificationProducerWebServices'
    interface='java.rmi.Remote'
    implementation='ossj.om.ri.ws.RemoteImpl'
    tie='ossj.om.ri.ws.NotificationProducerPort_Tie'
    model='/WEB-INF/model.gz'
    wsdl='/WEB-INF/wsdl/OrderManagement/v1-0/OSSJ-OrderManagement-v1-0.wsdl'
    service='{ossj_om}JVTOrderManagementSessionWebService'
    port='{ossj_om}NotificationProducerPort'
    urlpattern='/NotificationProducer'/>
  <endpoint
    name='OrderManagement_PausableSubscriptionManagerWebServices'
    interface='java.rmi.Remote'
    implementation='ossj.om.ri.ws.RemoteImpl'
    tie='ossj.om.ri.ws.PausableSubscriptionManagerPort_Tie'
    model='/WEB-INF/model.gz'
    wsdl='/WEB-INF/wsdl/OrderManagement/v1-0/OSSJ-OrderManagement-v1-0.wsdl'
    service='{ossj_om}JVTOrderManagementSessionWebService'
    port='{ossj_om}SubscriptionManagerPort'
    urlpattern='/SubscriptionManager'/>
</endpoints>

Conteúdo do ficheiro web.xml:

<web-app> 
   <display-name>OrderManagementWebServcieReferenceImplementation</display-name> 
   <description>OrderManagementWebServcieReferenceImplementation</description> 
   <listener>
<listener-class>com.sun.xml.rpc.server.http.JAXRPCContextListener</listener-class>
</listener>
<servlet>
<servlet-name>OrderManagement_JVTSessionWebService</servlet-name>
<display-name>OrderManagement_JVTSessionWebService</display-name>
<description>JAX-RPC endpoint - OrderManagement_JVTSessionWebService</description>
<servlet-class>com.sun.xml.rpc.server.http.JAXRPCServlet</servlet-class>
<init-param>
      <param-name>delegate</param-name>
      <param-value>ossj.om.ri.ws.MyJAXRPCServletDelegate</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>OrderManagement_NotificationProducer</servlet-name>
<display-name>OrderManagement_NotificationProducer</display-name>
<description>JAX-RPC endpoint - OrderManagement_NotificationProducer</description>
<servlet-class>com.sun.xml.rpc.server.http.JAXRPCServlet</servlet-class>
<init-param>
      <param-name>delegate</param-name>
      <param-value>ossj.om.ri.ws.MyJAXRPCServletDelegate</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>OrderManagement_PausableSubscriptionManager</servlet-name>
<display-name>OrderManagement_PausableSubscriptionManager</display-name>
<description>JAX-RPC endpoint - OrderManagement_PausableSubscriptionManager</description>
<servlet-class>com.sun.xml.rpc.server.http.JAXRPCServlet</servlet-class>
<init-param>
      <param-name>delegate</param-name>
      <param-value>ossj.om.ri.ws.MyJAXRPCServletDelegate</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
  <servlet-name>OrderManagement_JVTSessionWebService</servlet-name>
  <url-pattern>/JVTOrderManagementSession</url-pattern>
</servlet-mapping>
<servlet-mapping>
  <servlet-name>OrderManagement_NotificationProducer</servlet-name>
  <url-pattern>/NotificationProducer</url-pattern>
</servlet-mapping>
<servlet-mapping>
  <servlet-name>OrderManagement_PausableSubscriptionManager</servlet-name>
  <url-pattern>/SubscriptionManager</url-pattern>
</servlet-mapping>
<session-config> 
      <session-timeout>60</session-timeout> 
   </session-config> 
</web-app>

Espero que me possam ajudar.

Obrigado

5 Respostas

zoren

Cara, se eu não me engano o tomcat não roda Webservice

para isso vc terá que usar o Axis para poder usar

o tomcat é apenas um servlet container

e o glassfish já é um servidor de aplicação

P

Viva.

Há novos desenvolvimentos…

Nos “WAR’s” gerados(sim, tinha-me esquecido de referenciar que existem dois “WAR’s”, um com o nome oss_om_ri e outro com oss_om_ri_ws) coloquei os seguintes jar’s:

jaxrpc-impl.jar
jaxrpc-api.jar

Ao fazer deploy o tomcat não apresenta erros, mas não consigo aceder ao webservice.

Por exemplo: o mesmo webservice no glassfish tem o endereço:
http://localhost:8080/oss_om_ri_ws/JVTOrderManagementSession?WSDL

Se fizer o mesmo, alterando apenas a porta onde se encontra o tomcat:
http://localhost:8092/oss_om_ri_ws/JVTOrderManagementSession?WSDL

aqui, o webservice, já não aparece.

Já pensei em mudar para jax-ws, mas existe o problema do data binding: com o jax-ws teria de ir para o jaxb, e eu tenho implementado em xmlbeans…(isto falando da ligação do xml para ejb)

Alguém com o espirito natalicio para me poder ajudar???

(Já agora, feliz natal a toda a comunidade)

Abrigado

P

zoren:
Cara, se eu não me engano o tomcat não roda Webservice

para isso vc terá que usar o Axis para poder usar

o tomcat é apenas um servlet container

e o glassfish já é um servidor de aplicação

Viva.

Penso que estarás enganado, isto porque já vi pela net a referência em como dá para utilizar webservices no tomcat sem a utilização do axis…

Obrigado pela resposta

zoren

Todos os lugares que eu vi sobre o tomcat com webservices, tinha algum framework no meio

Caso vc tenha usado o eclipse para fazer os webservices, ele cria eles usando o Axis, claro que existem outras como o SpringWS

existe tbm o JBoss que usa o Tomcat como Servlet Container

Nunca vi (até hoje) o tomcat rodar webservice nativamente, apenas com Frameworks especificos, existem diversos frameworks que fazem o trabalho de um Container de webservice que implementam essa funcionalidade no Tomcat

zoren

No caso, se você tentar criar um webservice com o NetBeans e rodar no Tomcat, ele vai usar o Metro para rodar os Webservices, que no caso é o mesmo que o glassfish usa ( se eu não me engano)

Há algum tempo atrás a Sun tinha liberado um WhitePaper que mostrava as diferenças entre Glassfish e Tomcat, o ponto dos Webservices até apareceu nos meio

Criado 21 de dezembro de 2009
Ultima resposta 22 de dez. de 2009
Respostas 5
Participantes 2