CXF

From Resin 3.0

(Difference between revisions)
Jump to: navigation, search
(Converted JSP to Servlet)
Line 19: Line 19:
 
<li>Create the configuration file <code>/usr/local/share/resin/webapps/cxf/WEB-INF/resin-web.xml</code>
 
<li>Create the configuration file <code>/usr/local/share/resin/webapps/cxf/WEB-INF/resin-web.xml</code>
 
<pre><web-app xmlns="http://caucho.com/ns/resin">
 
<pre><web-app xmlns="http://caucho.com/ns/resin">
  <servlet-mapping url-pattern='/StrLen/*' servlet-class='demo.StrLenImpl'>
+
<servlet-mapping url-pattern='/StrLenDemo/*' servlet-class='demo.StrLenDemo'/>
 +
 
 +
<servlet-mapping url-pattern='/StrLen/*' servlet-class='demo.StrLenImpl'>
 
     <protocol type="cxf"/>
 
     <protocol type="cxf"/>
 
   </servlet-mapping>
 
   </servlet-mapping>
Line 60: Line 62:
 
</pre>
 
</pre>
 
</li>
 
</li>
<li>Create a JSP file to access the service
+
<li>Create a Servlet to access the service
<code>/usr/local/share/resin/webapps/cxf/StrLenDemo.jsp</code>
+
<code>/usr/local/share/resin/webapps/cxf/WEB-INF/classes/demo/StrLenDemo.java</code>
 
<pre>
 
<pre>
<%@ page import="javax.webbeans.In, demo.StrLen" %>
+
package demo;
<%
+
 
@In StrLen strlenClient;
+
import java.io.IOException;
%>
+
import java.io.Writer;
strlen("hello, world") = <%= strlenClient.strlen("hello, world") %>
+
 
 +
import javax.servlet.http.HttpServlet;
 +
import javax.servlet.http.HttpServletRequest;
 +
import javax.servlet.http.HttpServletResponse;
 +
import javax.webbeans.In;
 +
 
 +
public class StrLenDemo extends HttpServlet
 +
{
 +
  @In StrLen strlenClient;
 +
 
 +
  public void doGet(HttpServletRequest req, HttpServletResponse resp)
 +
    throws IOException
 +
  {
 +
    Writer out = resp.getWriter();
 +
    out.write("strlen(\"hello, world\") = " +
 +
              strlenClient.strlen("hello, world"));
 +
  }
 +
}
 
</pre>
 
</pre>
 
</li>
 
</li>
 
<li>Start Resin with <code>java -jar /usr/local/share/resin/lib/resin.jar</code></li>
 
<li>Start Resin with <code>java -jar /usr/local/share/resin/lib/resin.jar</code></li>
<li>Look at http://localhost:8080/cxf/StrLenDemo.jsp  It should show  
+
<li>Look at http://localhost:8080/cxf/StrLenDemo  
 +
<br/>It should show  
 
<pre>
 
<pre>
 
strlen("hello, world") = 12
 
strlen("hello, world") = 12
 
</pre>
 
</pre>
 
</ol>
 
</ol>

Revision as of 21:06, 23 January 2008

CXF and Resin

Resin features easy creation and deployment of CXF web services and clients, avoiding the need for complicated configuration.

(The following has been tested with Resin 3.1.5 and CXF 2.0.3)

  1. Download Resin from http://www.caucho.com/download
  2. Unzip Resin into /usr/local/share/resin
  3. Create the CXF webapp directory structure:
    mkdir -p /usr/local/share/resin/webapps/cxf/WEB-INF/lib/
    mkdir -p /usr/local/share/resin/webapps/cxf/WEB-INF/classes/demo/
  4. Download CXF from http://incubator.apache.org/cxf/
  5. Unzip CXF
  6. Copy all the jars included the CXF lib/ directory to
    /usr/local/share/resin/webapps/cxf/WEB-INF/lib/
  7. Create the configuration file /usr/local/share/resin/webapps/cxf/WEB-INF/resin-web.xml
    <web-app xmlns="http://caucho.com/ns/resin">
     <servlet-mapping url-pattern='/StrLenDemo/*' servlet-class='demo.StrLenDemo'/>
    
     <servlet-mapping url-pattern='/StrLen/*' servlet-class='demo.StrLenImpl'>
        <protocol type="cxf"/>
      </servlet-mapping>
    
      <remote-client class="demo.StrLen" name="StrLenClient">
        <url>cxf:http://localhost:8080/cxf/StrLen/StrLenImpl</url>
      </remote-client>
    </web-app>
    
  8. Create the interface file /usr/local/share/resin/webapps/cxf/WEB-INF/classes/demo/StrLen.java
    package demo;
    
    import javax.jws.WebMethod;
    import javax.jws.WebService;
    
    @WebService
    public interface StrLen {
      @WebMethod
      public int strlen(String x);
    }
    
  9. Create the implementation file /usr/local/share/resin/webapps/cxf/WEB-INF/classes/demo/StrLenImpl.java
    package demo;
    
    import javax.jws.WebService;
    
    @WebService(endpointInterface="demo.StrLen")
    public class StrLenImpl
    {
      public int strlen(String x)
      {
        return x.length();
      }
    }
    
  10. Create a Servlet to access the service /usr/local/share/resin/webapps/cxf/WEB-INF/classes/demo/StrLenDemo.java
    package demo;
    
    import java.io.IOException;
    import java.io.Writer;
    
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.webbeans.In;
    
    public class StrLenDemo extends HttpServlet
    {
      @In StrLen strlenClient;
    
      public void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws IOException
      {
        Writer out = resp.getWriter();
        out.write("strlen(\"hello, world\") = " + 
                  strlenClient.strlen("hello, world"));
      }
    }
    
  11. Start Resin with java -jar /usr/local/share/resin/lib/resin.jar
  12. Look at http://localhost:8080/cxf/StrLenDemo
    It should show
    strlen("hello, world") = 12
    
Personal tools