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.

About these ads

3 pensieri su “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

Fill in your details below or click an icon to log in:

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 )

Connessione a %s...