Home

Con poco tempo a disposizione ed Eclipse che dà i numeri con le annotazioni (una sfilza di errori inspiegabili dovuti a qualche conflitto nel classpath), ecco la soluzione rapida per consegnare in tempo il web-service.

Mi si perdoni la tecnica non molto raffinata, ma quando il tempo è poco… l’importante è il risultato. Poi nessuno vieta di capire il perchè dell’errore e passare a metodi più raffinati. Dunque….

In web.xml creare un listener

    remote.data.WebServiceStartupper

Il listener:

package remote.data;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.web.context.support.WebApplicationContextUtils;

public class WebServiceStartupper implements ServletContextListener    {
    static org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(WebServiceStartupper.class);
    @Override
    public void contextDestroyed(ServletContextEvent arg0) {
        // TODO Auto-generated method stub
    }

    @Override
    public void contextInitialized(ServletContextEvent arg0) {
        ServletContext context = arg0.getServletContext();
        BeanFactory factory = WebApplicationContextUtils.getRequiredWebApplicationContext(context);
        GlobalSpring.getInstance().setBeanFactory(factory);
    }
}

Il listener instanzia il singleton con la Factory di Spring.

</pre>
package remote.data;

import org.springframework.beans.factory.BeanFactory;

public class GlobalSpring {
 private static GlobalSpring instance;
 private BeanFactory beanFactory;
 private GlobalSpring() {
 super();
 }

 public static GlobalSpring getInstance(){
 if (instance == null) {
 instance = new GlobalSpring();
 }
 return instance;
 }

 public BeanFactory getBeanFactory() {
 return beanFactory;
 }

 public void setBeanFactory(BeanFactory beanFactory) {
 this.beanFactory = beanFactory;
 }
}

Per implementare il webservice io ho creato un’interfaccia e la sua implementazione.

package remote.data;

import org.springframework.beans.factory.BeanFactory;
import remote.data.GlobalSpring;

public class RemoteVarpLogic implements RemoteVarpLogicIfc {
    @Override
    public String sayHello(String str) {
        GlobalSpring globalSpring =    GlobalSpring.getInstance();
        BeanFactory factory = globalSpring.getBeanFactory();
        myLogic = (MyLogic)factory.getBean("myLogic");
        return mylogic.sayHello();
    }
}

Per creare il webservice:

Premere il tasto destro sull’implementazione.
Seguire le istruzioni fornite dal wiki di eclipse per creare un WS bottom-up.

3 thoughts on “Web Services in Spring con Eclipse: alla sporca maniera!

  1. In questi casi e soprattutto in certi ambienti l’importante è arrivare al tragurado non importa la strada presa. Molte volte, come in questo caso sono le cose poco raffinate che funzionano.

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...