Lo siguiente que hay que hacer es definir el/los interfaces de tus servicios. Es super simple:
package com.bcurtu.xfire;
import javax.jws.WebService;
@WebService
public interface AccountValidator {
public boolean isValidAlias(String alias);
public int blockAccount(String alias);
public int forceDeleteAccount(String alias);
}
Y a continuación implementarlos:
En este caso extendemos el Dao que hace exactamente lo especificado en la interface. Se puede ver que la annotation define el nombre y el interface que utilizapackage com.bcurtu.xfire;import javax.jws.WebService;
import com.bcurtu.db.AccountDaoHibernate;@WebService(
serviceName = "AccountService",
endpointInterface = "com.bcurtu.xfire.AccountValidator"
)
public class AccountValidatorImpl extends AccountDaoHibernate implements AccountValidator{
}
Hasta aquí tu trabajo de programación, lo demás es casi un copy-paste. Create un applicationContext.xml de Spring (o reutiliza cualquier otro que ya tengas) y añade esto:
<beans>
<bean id="webAnnotations"
class="org.codehaus.xfire.annotations.jsr181.Jsr181WebAnnotations"/>
<bean id="handlerMapping"
class=" org.codehaus.xfire.spring.remoting.Jsr181HandlerMapping">
<property name="typeMappingRegistry" ref="xfire.typeMappingRegistry"/>
<property name="xfire" ref="xfire"/>
<property name="webAnnotations" ref="webAnnotations"/>
</bean>
<import resource="classpath:org/codehaus/xfire/spring/xfire.xml"/>
<!-- List here your WebServices classes -->
<bean id="accountValidator" class="com.bcurtu.xfire.AccountValidatorImpl">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
</beans>
Los dos primeros beans hacen el trabajo por tí. El tercero simplemente debe existir para que Spring cree los objetos.
Lo siguiente también es copy-paste. En tu web.xml, añade la ruta a los web services:
<servlet>..........
<servlet-name>XFireServlet</servlet-name>
<servlet-class>org.codehaus.xfire.spring.XFireSpringServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/xfire/*</url-pattern>
Y nada más! Haz un deploy de tu applicación, y en http://127.0.0.1:8080/tuapplicacion/xfire/AccountService?wsdl encontrarás el descriptor
El código se puede encontrar en (usando svn) https://tempmail.googlecode.com/branches/TempMailExp (acuérdate de poner el https, que si no no podrás hacer commits!)




5 comentarios:
Hola, intenté bajar el código usando TortoiseSVN de aquí https://tempmail.googlecode.com/branches/TempMailExp
Al parecer hay un error.
Muy buen artículo!
Hole Eliseo, prueba a bajarte el código desde el trunk. Como he estado continuamente evolucionando el proyecto utilizando una y otra tecnología, cuando reuní un conjunto de features suficiente lo moví todo al trunk.
Si no quieres hacer commits sobre mi proyecto, o no tienes usuario de google code prueba la url http://tempmail.googlecode.com/svn/trunk/
Hay está el proyecto para Eclipse TempAlias.
Bajalo.
También verás que he añadido una capa service (BestPractices) y el WebService ahora accede a esta capa en vez de utilizar el DAO directamente. Es mejor así. De todas maneras, en cuanto a configuración todo es igual.
Saludos
Hola, he colocado XFire en un servidor Tomcat creando una aplicacion llamada simplemente xfire.
Dentro de WEB-INF/lib coloque todas las jars requeridas.
Dentro de METAINF/xfire el archivo services.xml
Vamos bien ??
Saludos
Juan M Wagner
jwagner@uabc.mx
Hola a todos, por fa, necesito trabajar en seguridad para Ws en Xfire y la verdad, todo lo que he leído hasta ahora me ha confundido mucho, si tiene alguna información interesante que me pueda servir ya sea de wss4j o acegi o por el estilo con Seguridad, le agradecería mucho. saludos y gracias
Publicar un comentario en la entrada