|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Jan 2006
Messaggi: 38
|
WebServices & SEAM
Salve a tutti......
Uso SEAM per un mio progetto e ho ora la necessità di esporre un WebService dalla mia applicazione web..... Ho letto varie guide in giro per il mondo ma nessuna mi ha portato a un risultato soddisfacente, così chiedo qui, magari qualcuno è già passato per queste strade e puo' aiutarmi... Espongo 2 modi diversi usati da me per implementare i webSerrvices con SEAM, anche se entrambi hanno presentato dei problemi. ( Jboss 4.0, SEAM 2.0.2, Java 1.6_10) Intanto in entrambi i casi ho importato il seguenti jar nella cartella ENSORSED di Jboss: * jaxb-api.jar * jbossws-native-jaxrpc.jar * jbossws-native-jaxws.jar * jbossws-native-jaxws-ext.jar * jbossws-native-saaj.jar 1) Definendo il WS sul file web.xml: Ho la mia classe con le annotation @Name("provaWebServiceImpl") @Stateless @SOAPBinding(style = SOAPBinding.Style.RPC) @WebService public class ProvaWebServiceImpl implements ProvaWebService{ @WebMethod public int somma(int x, int y) { Lifecycle.beginCall(); Sommatore sommatore= (Sommatore ) Component.getInstance("sommatore"); return sommatore.somma(x,y);} } e la parte web.xml che mi definisce il path... <servlet> <servlet-name>ProvaWebService</servlet-name> <servlet-class>test.webServices.ProvaWebServiceImpl</servlet-class> </servlet> <servlet-mapping> <servlet-name>ProvaWebService</servlet-name> <url-pattern>/prova</url-pattern> </servlet-mapping> <filter> <filter-name>Seam Servlet Filter</filter-name> <filter-class>org.jboss.seam.servlet.SeamServletFilter</filter-class> </filter> Problemi riscontrati: Se Sommatore è un EJB Stateless o uno dei suoi componenti interni è stateless (@Stateless) l'oggetto non viene inettato e mi da errore sul cast... Errore-->org.javassist.tmp.java.lang.Object_$$_javassist_0 cannot be cast to...... -------------------------------------- 2) Creando il file standard-jaxws-endpoint-config.xml sotto la cartella MetaInf allo stesso livello delle classi compilate Mettendoci dentro: <jaxws-config xmlns="urn:jboss:jaxws-config:2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:javaee="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="urn:jboss:jaxws-config:2.0 jaxws-config_2.1.xsd"> <endpoint-config> <config-name>Seam WebService Endpoint</config-name> <pre-handler-chains> <javaee:handler-chain> <javaee ![]() ![]() <javaee:handler> <javaee:handler-name>SOAP Request Handler</javaee:handler-name> <javaee:handler-class>org.jboss.seam.webservice.SOAPRequestHandler</javaee:handler-class> </javaee:handler> </javaee:handler-chain> </pre-handler-chains> </endpoint-config> </jaxws-config> e lasciando il codice Java inalterato Problemi riscontrati: Il seguente errore-->java.lang.LinkageError: loader constraint violation: loader (instance of org/jboss/mx/loading/UnifiedClassLoader3) previously initiated loading for a different type with name "javax/xml/soap/SOAPMessage" Ho scoperto che nel JDK 1.6 esiste una classe SOAPMessage che si trova nel package rt.jar e un'altra nei jar che ho aggiunto io ( senza i quali però nulla funziona) ma non so che provvedimenti prendere... ![]() ![]() Ok mi pare sia tutto.... Ora mi inchino davanti alle vostr conoscenze e aspetto ![]() PS Ovviamente se non chiamo componenti SEAM il tutto funziona... |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:33.