2012-02-08 93 views
0

我創建cxf webservice。cxf webservice RestTemplate

我想通過使用POST變量通過HTTP從我的web服務向其他服務發送一些信息。

我想使用RestTemplate,它在我的其他Spring MVC項目中完美地工作。

cxf web服務將在Fuse ESB下運行。

當我創建的空CXF Web服務,這沒有什麼,但解決的變量,我可以看到下FUSE ESB網址我的web服務:http://localhost:8181/cxf/

但是,當我加入我的代碼來控制,另外我加入依賴關係pom.xml到org.apache.cxf.transport.http,宣佈我的webservice消失後。

我的控制器是:

package com.esb.cxf; 

import javax.ws.rs.GET; 
import javax.ws.rs.POST; 
import javax.ws.rs.ConsumeMime; 
import javax.ws.rs.Path; 
import javax.ws.rs.ProduceMime; 
import javax.ws.rs.FormParam; 

import java.io.BufferedReader; 
import java.io.DataOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.net.*; 
import java.util.ArrayList; 
import java.util.List; 
import java.util.logging.Logger; 
import java.io.*; 

import javax.servlet.http.Cookie; 
import javax.servlet.http.HttpSession; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 


import org.springframework.web.client.RestTemplate; 

@Path("/") 
@ProduceMime({ "application/json" }) 
public class SSO { 

    private String urlSCS = "..."; 

    // private String urlSCS = "..."; 

    @POST 
    @Path("/user") 
    @ProduceMime({ "application/json" }) 
    public String user(@FormParam("token") String token) { 

     RestTemplate restTemplate = new RestTemplate(); 

     String result = restTemplate.getForObject("http://localhost:8080/TEST/?var=test", String.class); 


     return token; 


    } 



} 

,我的pom.xml的是:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 

    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.esb.cxf</groupId> 
    <artifactId>cxfSSO3</artifactId> 
    <packaging>bundle</packaging> 
    <version>1.0.0</version> 
    <name>Apache ServiceMix :: CXF WSDL First OSGi Bundle</name> 
    <properties> 
     <java-version>1.6</java-version> 
     <org.springframework-version>3.0.6.RELEASE</org.springframework-version> 
     <org.aspectj-version>1.6.9</org.aspectj-version> 
     <org.slf4j-version>1.5.10</org.slf4j-version> 
    </properties> 
    <dependencies> 
     <dependency> 
      <groupId>org.apache.cxf</groupId> 
      <artifactId>cxf-rt-frontend-jaxrs</artifactId> 
      <version>2.1.4</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.cxf</groupId> 
      <artifactId>cxf-rt-transports-http</artifactId> 
      <version>2.1.4</version> 
     </dependency> 
    <dependency> 
      <groupId>org.apache.geronimo.specs</groupId> 
      <artifactId>geronimo-ws-metadata_2.0_spec</artifactId> 
      <version>1.1.2</version> 
     </dependency> 

    <!-- Spring --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>${org.springframework-version}</version> 
      <exclusions> 
       <!-- Exclude Commons Logging in favor of SLF4j --> 
       <exclusion> 
        <groupId>commons-logging</groupId> 
        <artifactId>commons-logging</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>${org.springframework-version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-web</artifactId> 
      <version>${org.springframework-version}</version> 
     </dependency> 

    <dependency> 
      <groupId>javax.xml.bind</groupId> 
      <artifactId>jaxb-api</artifactId> 
      <version>2.1</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.servicemix.bundles</groupId> 
      <artifactId>org.apache.servicemix.bundles.commons-httpclient</artifactId> 
      <version>3.1_5</version> 
     </dependency> 


     <!-- Servlet --> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>servlet-api</artifactId> 
      <version>2.5</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet.jsp</groupId> 
      <artifactId>jsp-api</artifactId> 
      <version>2.1</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>jstl</artifactId> 
      <version>1.2</version> 
     </dependency> 
    </dependencies> 

    <build> 
     <defaultGoal>install</defaultGoal> 
     <plugins> 
       <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>2.0.2</version> 
       <configuration> 
        <source>1.5</source> 
        <target>1.5</target> 
        <encoding>UTF-8</encoding> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-resources-plugin</artifactId> 
       <version>2.4.3</version> 
       <configuration> 
        <encoding>UTF-8</encoding> 
       </configuration> 
      </plugin> 

      <plugin> 
       <groupId>org.apache.felix</groupId> 
       <artifactId>maven-bundle-plugin</artifactId> 
       <version>2.1.0</version> 
       <extensions>true</extensions> 
       <configuration> 
        <instructions> 
         <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName> 
         <Import-Package> 
          javax.jws, 
          javax.wsdl, 
          javax.xml.bind, 
          javax.xml.bind.annotation, 
          javax.xml.namespace, 
          javax.xml.ws, 
          javax.ws.rs, 
          javax.ws.rs.core, 
          javax.servlet, 
          javax.servlet.http, 
          META-INF.cxf, 
          META-INF.cxf.osgi, 
          org.apache.cxf.bus, 
          org.apache.cxf.bus.spring, 
          org.apache.cxf.bus.resource, 
          org.apache.cxf.configuration.spring, 
          org.apache.cxf.resource, 
          org.apache.cxf.jaxws, 
          org.apache.cxf.transport.http, 
          org.springframework.beans.factory.config, 
          org.springframework.web.client, 
          org.springframework.web, 

          org.apache.commons.httpclient, 
          org.apache.commons.httpclient.methods 
         </Import-Package> 

          <DynamicImport-Package>com.esb.cxf.*</DynamicImport-Package> 

        </instructions> 
       </configuration> 
      </plugin> 

     </plugins> 
    </build> 
</project> 

如果我會刪除

org.springframework.web.client, 
           org.springframework.web, 
從pom.xml的

RestTemplate restTemplate = new RestTemplate(); 

     String result = restTemplate.getForObject("http://localhost:8080/TEST/?var=test", String.class); 

從控制器,則web服務再次顯示在我的下FUSE ESB網址web服務:http://localhost:8181/cxf/

此外FUSE ESB顯示閒來無事在「登錄服務」除了BundleEvent INSTALLED

我可以在CXF Web服務使用org.springframework.web.client

回答

0

嘗試將spring和spring-web導入ESB。在卡拉夫控制檯類型的功能:安裝彈簧; 特點:安裝spring-web;

應該工作:)