View Javadoc

1   package org.codehaus.xfire.plexus;
2   
3   import java.io.File;
4   import javax.servlet.ServletException;
5   import org.codehaus.xfire.XFire;
6   import org.codehaus.xfire.service.ServiceRegistry;
7   import org.codehaus.xfire.transport.TransportManager;
8   import org.codehaus.xfire.transport.http.XFireServlet;
9   
10  /***
11   * Creates an embedded version of XFire within a servlet.  For most
12   * applications this will probably be sufficient.  For more advanced
13   * container usages, see the XFireServlet and Plexus documentation.
14   * 
15   * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a>
16   */
17  public class StandaloneXFireServlet
18  	extends XFireServlet
19  {
20      StandaloneXFire xfire;
21      
22      public XFire getXFire() throws ServletException
23      {
24          try
25          {
26              return xfire.getXFire();
27          }
28          catch (Exception e)
29          {
30              e.printStackTrace();
31              throw new ServletException("Couldn't find XFire service.  Check configuration.", e);
32          }
33      }
34      
35      public void init() throws ServletException
36      {
37          File config = new File(getWebappBase(), getInitParameter("config"));
38          
39          System.setProperty("xfire.config", config.getAbsolutePath());
40          System.out.println("Configuration file: " + config.getAbsolutePath());
41          
42          String plexusConfig = getInitParameter("plexus-config");
43          if ( plexusConfig != null )
44          {
45          	System.setProperty("xfire.plexusConfig", plexusConfig);
46          }
47          
48          try
49          {
50              xfire = StandaloneXFire.getInstance();
51          }       
52          catch (Exception e)
53          {
54              e.printStackTrace();
55              throw new ServletException("Couldn't start XFire service.  Check configuration.", e);
56          }
57          
58          super.init();
59      }
60      
61      /***
62       * @return
63       * @throws Exception
64       */
65      protected TransportManager getTransportManager()
66      	throws ServletException
67      {
68          try
69          {
70              return xfire.getTransportService();
71          }
72          catch (Exception e)
73          {
74              throw new ServletException("No transport service found!", e);
75          }
76      }
77      
78      public ServiceRegistry getServiceRegistry()
79          throws ServletException
80      {
81          try
82          {
83              return xfire.getServiceRegistry();
84          }
85          catch (Exception e)
86          {
87              throw new ServletException("No service registry found!", e);
88          }
89      }
90      
91      public void destroy()
92      {
93          xfire = null;
94  
95          super.destroy();
96      }
97  }