|
Page Edited :
CXF20DOC :
CXF_Eclipse_Plugin_Instructions
CXF_Eclipse_Plugin_Instructions has been edited by Anne Racel (Sep 20, 2007). Content:Web Services with CXF and EclipseIntroductionThese directions assume that you are familiar with using Eclipse SetupIt is assumed that you have already downloaded and installed Eclipse Updating EclipseYou will need to install some extra plugins for the Web Services in general, and the CXF Web Services specifically. Start by downloading the CXF plugin
Be sure to include any dependencies. Note: you may have to run this a couple of times. Some items don't show up until others have been loaded. Finish Setting Up EclipseOnce you have all your uploads loaded, you'll need to link CXF as your Installed runtime. Click Windows/Preferences/SOA Tools. Browse to your directory that contains Apache CXF, then click OK. Now create a Connection Profile for your application server:
Creating a ProjectJava First (Not Recommended)NOTE: Keep the default directory structure. The automated system gets confused if you change it.
Now you'll need to make some modifications to the automatically generated comments.
After your changes are made and save without any error, a WSDL should appear in the wsdl folder. If it doesn't, use java2wsdl from the CXF package. You can either run it from the command prompt, as an ant task After the WSDL is created, modify to meet your needs. For example, the port is, by default http://localhost:9090/ <?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="ScientificCalculatorService" targetNamespace="http://service.simpleservice.cid.com/"
xmlns:ns1="http://service.simpleservice.cid.com/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<wsdl:types>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://service.simpleservice.cid.com/"
attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://service.simpleservice.cid.com/">
<xsd:element name="squareRoot" type="squareRoot"/>
<xsd:complexType name="squareRoot">
<xsd:sequence>
<xsd:element name="arg0" type="xsd:float"/>
<xsd:element name="arg1" type="xsd:float"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="squareRootResponse" type="squareRootResponse"/>
<xsd:complexType name="squareRootResponse">
<xsd:sequence>
<xsd:element name="return" type="xsd:float"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</wsdl:types>
<wsdl:message name="squareRootResponse">
<wsdl:part name="squareRootOutput" element="ns1:squareRootResponse">
</wsdl:part>
</wsdl:message>
<wsdl:message name="squareRoot">
<wsdl:part name="squareRootInput" element="ns1:squareRoot">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="ScientificCalculator">
<wsdl:operation name="squareRoot">
<wsdl:input name="squareRoot" message="ns1:squareRoot">
</wsdl:input>
<wsdl:output name="squareRootResponse" message="ns1:squareRootResponse">
</wsdl:output>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="ScientificCalculatorServiceSoapBinding" type="ns1:ScientificCalculator">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="squareRoot">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="squareRoot">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="squareRootResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="ScientificCalculatorService">
<wsdl:port name="ScientificCalculatorPort" binding="ns1:ScientificCalculatorServiceSoapBinding">
<soap:address location="http://localhost:8080/JavaFirstTest"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Once your WSDL is set, use it to create your implementation class. Highlight the WSDL and right-click. Select JAX-WS Tools/Generate Code. Select Implementation and, if you're using Ant, select Generate Ant Script. If the Impl file isn't created, you can run wsdl2java using the command line, Ant task or maven
/**
* Please modify this class to meet your needs
* This class is not complete
*/
package com.cid.simpleservice.service;
import java.util.logging.Logger;
import javax.jws.WebMethod;
import javax.jws.WebResult;
import javax.xml.ws.RequestWrapper;
import javax.xml.ws.ResponseWrapper;
/**
* This class was generated by the CXF 2.0.1-incubator
* Mon Sep 17 14:10:36 EDT 2007
* Generated source version: 2.0.1-incubator
*
*/
@javax.jws.WebService(name = "ScientificCalculator", serviceName = "ScientificCalculatorService",
portName = "ScientificCalculatorPort",
targetNamespace = "http://service.simpleservice.cid.com/",
wsdlLocation = "file:wsdl/javaFirstTest.wsdl" ,
endpointInterface = "com.cid.simpleservice.service.ScientificCalculator")
public class ScientificCalculatorImpl implements ScientificCalculator {
private static final Logger LOG = Logger.getLogger(ScientificCalculatorImpl.class.getName());
/* (non-Javadoc)
* @see com.cid.simpleservice.service.ScientificCalculator#squareRoot(float arg0 ,)float arg1 )*
*/
public float squareRoot(float arg0,float arg1) {
LOG.info("Executing operation squareRoot");
System.out.println(arg0);
System.out.println(arg1);
try {
float _return = 0.0f;
return _return;
} catch (Exception ex) {
ex.printStackTrace();
throw new RuntimeException(ex);
}
}
}
Note: this last step is why it's suggested that you not use this process. Using java2wsdl, then wsdl2java is not supported at this time by CXF. And, as you've seen some of the automation doesn't work quite right. Modify your Implementation class to reflect your actual methods. WSDL FirstCreate your WSDL. The syntax is beyond the scope of this wiki. But there is a tool within Eclipse for creating one. Just select File/New/Other/Web Services/WSDL. You can validate your WSDL by using wsdl2java with the -validate flag. Create a new project: File/New/Project/SOA Tools/JAX-WS WSDL First Project. Select your WSDL. Select to create the Implementation and, if you wish, Generate Ant Script. Leave everything checked as shown. If the code isn't automatically generated, run wsdl2java to generate your code. Modify your implementation classes to reflect your actual methods. Deploying ProjectSelect File/New/Other/SOA Tools Deployment Profile. Walk through the selections and click Finish. When the editor screen comes up, select the Configuration tab at the bottom. If you didn't add your package when you created the Deployment Profile, click the Add Package button on the right. Select your WSDL from the list, then click OK. Next, click Add Target. Choose your target server, then click OK. Click Create packages at the top of the editor window. This should create your bean definition file and your web.xml file, compile your classes and create the war file. If the package doesn't create itself, you'll need to manually create the configuration files and war file:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:soap="http://cxf.apache.org/bindings/soap" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://cxf.apache.org/bindings/soap http://cxf.apache.org/schemas/configuration/soap.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"> <jaxws:endpoint id="ScientificCalculator_xml_bare" implementor="<b>path to your implementation directory</b>" wsdlLocation="WEB-INF/wsdl/JavaFirst.wsdl" address="/JavaFirst"> <jaxws:features> <bean class="org.apache.cxf.feature.LoggingFeature" /> </jaxws:features> </jaxws:endpoint> </beans> You may see errors for the endpoint tag. As long as you include the cxf libraries, you can ignore them.
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>cxf</display-name>
<description>cxf</description>
<servlet>
<servlet-name>cxf</servlet-name>
<display-name>cxf</display-name>
<description>Apache CXF Endpoint</description>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>cxf</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>60</session-timeout>
</session-config>
</web-app>
Once you deploy your war file, go to: http://<your server>:<port>/<deployment name>/services. You'll see a link to your wsdl file. Click on it and your wsdl should appear. |
Unsubscribe or edit your notifications preferences
