You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2016/07/18 07:36:44 UTC

cxf git commit: Moving a demo client code into its module

Repository: cxf
Updated Branches:
  refs/heads/master 131449dc8 -> 11e18bf56


Moving a demo client code into its module


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/11e18bf5
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/11e18bf5
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/11e18bf5

Branch: refs/heads/master
Commit: 11e18bf5622cafdb10723cee895885d676b35a7b
Parents: 131449d
Author: Sergey Beryozkin <sb...@gmail.com>
Authored: Mon Jul 18 10:36:26 2016 +0300
Committer: Sergey Beryozkin <sb...@gmail.com>
Committed: Mon Jul 18 10:36:26 2016 +0300

----------------------------------------------------------------------
 .../jax_rs/spring_boot_scan/application/pom.xml | 33 +------
 .../rs/client/SampleRestClientApplication.java  | 95 --------------------
 .../src/main/resources/application.yml          |  5 +-
 .../jax_rs/spring_boot_scan/client/README       | 33 +++++++
 .../jax_rs/spring_boot_scan/client/pom.xml      | 64 +++++++++++++
 .../rs/client/SampleRestClientApplication.java  | 95 ++++++++++++++++++++
 .../java/sample/rs/service/HelloService.java    | 34 +++++++
 .../client/src/main/resources/application.yml   | 12 +++
 8 files changed, 240 insertions(+), 131 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/11e18bf5/distribution/src/main/release/samples/jax_rs/spring_boot_scan/application/pom.xml
----------------------------------------------------------------------
diff --git a/distribution/src/main/release/samples/jax_rs/spring_boot_scan/application/pom.xml b/distribution/src/main/release/samples/jax_rs/spring_boot_scan/application/pom.xml
index 50c3f98..856becc 100644
--- a/distribution/src/main/release/samples/jax_rs/spring_boot_scan/application/pom.xml
+++ b/distribution/src/main/release/samples/jax_rs/spring_boot_scan/application/pom.xml
@@ -6,7 +6,7 @@
         <artifactId>spring-boot-starter-parent</artifactId>
         <version>1.3.6.RELEASE</version>
     </parent> 
-    <artifactId>spring-boot-sample-rs-cxf-scan</artifactId>
+    <artifactId>spring-boot-sample-rs-cxf-scan-app</artifactId>
     <groupId>org.apache.cxf.samples</groupId>
     <version>3.2.0-SNAPSHOT</version>
     <name>Spring Boot CXF REST Scan Application</name>
@@ -29,11 +29,6 @@
             <artifactId>cxf-rt-rs-service-description-swagger</artifactId>
             <version>${cxf.version}</version>
         </dependency>
-        <dependency>
-            <groupId>org.apache.cxf</groupId>
-            <artifactId>cxf-rt-features-clustering</artifactId>
-            <version>${cxf.version}</version>
-        </dependency>
         <!-- Eureka Service Discovery Client -->
         <dependency>
             <groupId>org.springframework.cloud</groupId>
@@ -46,11 +41,6 @@
             <artifactId>spring-boot-actuator</artifactId>
             <version>${spring.boot.version}</version>
         </dependency>
-        <dependency>
-            <groupId>org.qi4j.library</groupId>
-            <artifactId>org.qi4j.library.circuitbreaker</artifactId>
-            <version>${cxf.zest.version}</version>
-        </dependency>
     </dependencies>
     <profiles>
        <profile>
@@ -61,27 +51,6 @@
              <plugin>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-maven-plugin</artifactId>
-              <configuration>
-                <mainClass>sample.rs.service.SampleRestApplication</mainClass>
-              </configuration>  
-             </plugin>
-           </plugins>
-          </build>
-       </profile>
-       <profile>
-         <id>client</id>
-         <build>
-           <defaultGoal>spring-boot:run</defaultGoal>
-           <plugins>
-             <plugin>
-              <groupId>org.springframework.boot</groupId>
-              <artifactId>spring-boot-maven-plugin</artifactId>
-              <configuration>
-                <mainClass>sample.rs.client.SampleRestClientApplication</mainClass>
-                <arguments>
-                   <argument>--eureka.client.registerWithEureka=false</argument>
-                 </arguments>
-              </configuration>  
              </plugin>
            </plugins>
           </build>

http://git-wip-us.apache.org/repos/asf/cxf/blob/11e18bf5/distribution/src/main/release/samples/jax_rs/spring_boot_scan/application/src/main/java/sample/rs/client/SampleRestClientApplication.java
----------------------------------------------------------------------
diff --git a/distribution/src/main/release/samples/jax_rs/spring_boot_scan/application/src/main/java/sample/rs/client/SampleRestClientApplication.java b/distribution/src/main/release/samples/jax_rs/spring_boot_scan/application/src/main/java/sample/rs/client/SampleRestClientApplication.java
deleted file mode 100644
index 660cec9..0000000
--- a/distribution/src/main/release/samples/jax_rs/spring_boot_scan/application/src/main/java/sample/rs/client/SampleRestClientApplication.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/**
- * 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.
- */
-package sample.rs.client;
-
-import java.util.LinkedList;
-import java.util.List;
-
-import javax.ws.rs.core.UriBuilder;
-
-import org.apache.cxf.annotations.Provider;
-import org.apache.cxf.annotations.Provider.Type;
-import org.apache.cxf.clustering.FailoverStrategy;
-import org.apache.cxf.clustering.RandomStrategy;
-import org.apache.cxf.clustering.circuitbreaker.CircuitBreakerFailoverFeature;
-import org.apache.cxf.jaxrs.client.spring.EnableJaxRsProxyClient;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.CommandLineRunner;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.builder.SpringApplicationBuilder;
-import org.springframework.cloud.client.ServiceInstance;
-import org.springframework.cloud.client.discovery.DiscoveryClient;
-import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
-import org.springframework.context.annotation.Bean;
-import org.springframework.stereotype.Component;
-
-import sample.rs.service.HelloService;
-
-@SpringBootApplication
-@EnableEurekaClient
-@EnableJaxRsProxyClient
-public class SampleRestClientApplication {
-    public static void main(String[] args) {
-        new SpringApplicationBuilder(SampleRestClientApplication.class)
-            .web(false)
-            .run(args);
-    }  
-    @Bean
-    CommandLineRunner initProxyClient(final HelloService service) {
-      
-      return new CommandLineRunner() {
-        @Override
-        public void run(String... runArgs) throws Exception {
-            System.out.println(service.sayHello("ApacheCxfProxyUser1"));
-            System.out.println(service.sayHello("ApacheCxfProxyUser2"));
-        }
-      };
-    }
-
-    /**
-     * Basic Random selection of statically prepared addresses.
-     * More advanced strategies will periodically pull DiscoveryClient
-     * to update the addresses list
-     */
-    @Component
-    @Provider(Type.Feature)
-    static class EurekaFailoverFeature extends CircuitBreakerFailoverFeature {
-        @Autowired
-        DiscoveryClient discoveryClient;
-        List<String> addresses = new LinkedList<String>();
-        
-        public EurekaFailoverFeature() {
-            super("eureka://registry");
-        }
-        
-        @Override
-        public FailoverStrategy getStrategy()  {
-            for (ServiceInstance s : discoveryClient.getInstances("jaxrs-hello-world-service")) {
-                UriBuilder ub = UriBuilder.fromUri(s.getUri());
-                if (s.getMetadata().containsKey("servletPath")) {
-                    ub.path(s.getMetadata().get("servletPath"));
-                }
-                addresses.add(ub.build().toString());
-            }
-            RandomStrategy rs = new RandomStrategy();
-            rs.setAlternateAddresses(addresses);
-            return rs;
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/cxf/blob/11e18bf5/distribution/src/main/release/samples/jax_rs/spring_boot_scan/application/src/main/resources/application.yml
----------------------------------------------------------------------
diff --git a/distribution/src/main/release/samples/jax_rs/spring_boot_scan/application/src/main/resources/application.yml b/distribution/src/main/release/samples/jax_rs/spring_boot_scan/application/src/main/resources/application.yml
index 26fb5aa..d59f2c1 100644
--- a/distribution/src/main/release/samples/jax_rs/spring_boot_scan/application/src/main/resources/application.yml
+++ b/distribution/src/main/release/samples/jax_rs/spring_boot_scan/application/src/main/resources/application.yml
@@ -9,13 +9,10 @@ cxf:
   jaxrs:
     component-scan: true
     classes-scan-packages: org.apache.cxf.jaxrs.swagger
-    client:
-      address: eureka://registry
-      classes-scan-packages: sample.rs.service
 
 eureka:
   client:
-    registerWithEureka: ${register.with.eureka:true}
+    registerWithEureka: true
     serviceUrl:
       defaultZone: http://127.0.0.1:8761/eureka/
   instance:

http://git-wip-us.apache.org/repos/asf/cxf/blob/11e18bf5/distribution/src/main/release/samples/jax_rs/spring_boot_scan/client/README
----------------------------------------------------------------------
diff --git a/distribution/src/main/release/samples/jax_rs/spring_boot_scan/client/README b/distribution/src/main/release/samples/jax_rs/spring_boot_scan/client/README
new file mode 100644
index 0000000..d42c304
--- /dev/null
+++ b/distribution/src/main/release/samples/jax_rs/spring_boot_scan/client/README
@@ -0,0 +1,33 @@
+== Spring Boot - Samples - CXF Rest Client 
+
+This sample project demonstrates how to use CXF JAX-RS client code
+with Spring Boot.
+
+The application registers itself with Eureka Registry.  
+The client discovers the client address from the registry and invokes it.
+
+The sample uses Maven. It can be built and run from the command line.
+
+To run the client from a command line:
+
+1. 
+If you have not started a eureka-registry application then build and start it 
+first in the eureka-registry folder in a separate terminal window:
+
+$ mvn spring-boot:run
+
+If you have not started a demo application then build and start it 
+first in the application folder in a separate terminal window:
+
+----
+$ mvn -Pserver
+----
+
+
+Before running a command line client check the application has been registered, open a browser 
+and try "http://localhost:8761/eureka/apps". Once you see a registration record, 
+open a new terminal window and run the client:
+
+----
+$ mvn -Pclient
+----

http://git-wip-us.apache.org/repos/asf/cxf/blob/11e18bf5/distribution/src/main/release/samples/jax_rs/spring_boot_scan/client/pom.xml
----------------------------------------------------------------------
diff --git a/distribution/src/main/release/samples/jax_rs/spring_boot_scan/client/pom.xml b/distribution/src/main/release/samples/jax_rs/spring_boot_scan/client/pom.xml
new file mode 100644
index 0000000..660755d
--- /dev/null
+++ b/distribution/src/main/release/samples/jax_rs/spring_boot_scan/client/pom.xml
@@ -0,0 +1,64 @@
+<?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>
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>1.3.6.RELEASE</version>
+    </parent> 
+    <artifactId>spring-boot-sample-rs-cxf-scan-client</artifactId>
+    <groupId>org.apache.cxf.samples</groupId>
+    <version>3.2.0-SNAPSHOT</version>
+    <name>Spring Boot CXF REST Scan Application Client</name>
+    <description>Spring Boot CXF REST Scan Application Client</description>
+    
+    <properties>
+        <cxf.version>3.2.0-SNAPSHOT</cxf.version>
+        <cxf.zest.version>2.1</cxf.zest.version> 
+        <spring.boot.version>1.3.6.RELEASE</spring.boot.version>
+        <spring.cloud.eureka.version>1.1.3.RELEASE</spring.cloud.eureka.version>
+    </properties>
+    <dependencies>
+        <!-- CXF JAX-RS Client -->
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-rt-rs-client</artifactId>
+            <version>${cxf.version}</version>
+        </dependency>
+        <!-- CXF FailoverFeature - pluggable with various strategies -->
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-rt-features-clustering</artifactId>
+            <version>${cxf.version}</version>
+        </dependency>
+        <!-- Eureka Service Discovery Client -->
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-eureka</artifactId>
+            <version>${spring.cloud.eureka.version}</version>
+        </dependency>
+        <!-- Zest Circuit Breaker used by CXF Failover Feature -->
+        <dependency>
+            <groupId>org.qi4j.library</groupId>
+            <artifactId>org.qi4j.library.circuitbreaker</artifactId>
+            <version>${cxf.zest.version}</version>
+        </dependency>
+    </dependencies>
+    <profiles>
+       <profile>
+         <id>client</id>
+         <build>
+           <defaultGoal>spring-boot:run</defaultGoal>
+           <plugins>
+             <plugin>
+              <groupId>org.springframework.boot</groupId>
+              <artifactId>spring-boot-maven-plugin</artifactId>
+              <configuration>
+                <mainClass>sample.rs.client.SampleRestClientApplication</mainClass>
+              </configuration>  
+             </plugin>
+           </plugins>
+          </build>
+       </profile>
+    </profiles>
+</project>

http://git-wip-us.apache.org/repos/asf/cxf/blob/11e18bf5/distribution/src/main/release/samples/jax_rs/spring_boot_scan/client/src/main/java/sample/rs/client/SampleRestClientApplication.java
----------------------------------------------------------------------
diff --git a/distribution/src/main/release/samples/jax_rs/spring_boot_scan/client/src/main/java/sample/rs/client/SampleRestClientApplication.java b/distribution/src/main/release/samples/jax_rs/spring_boot_scan/client/src/main/java/sample/rs/client/SampleRestClientApplication.java
new file mode 100644
index 0000000..660cec9
--- /dev/null
+++ b/distribution/src/main/release/samples/jax_rs/spring_boot_scan/client/src/main/java/sample/rs/client/SampleRestClientApplication.java
@@ -0,0 +1,95 @@
+/**
+ * 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.
+ */
+package sample.rs.client;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import javax.ws.rs.core.UriBuilder;
+
+import org.apache.cxf.annotations.Provider;
+import org.apache.cxf.annotations.Provider.Type;
+import org.apache.cxf.clustering.FailoverStrategy;
+import org.apache.cxf.clustering.RandomStrategy;
+import org.apache.cxf.clustering.circuitbreaker.CircuitBreakerFailoverFeature;
+import org.apache.cxf.jaxrs.client.spring.EnableJaxRsProxyClient;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.cloud.client.ServiceInstance;
+import org.springframework.cloud.client.discovery.DiscoveryClient;
+import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
+import org.springframework.context.annotation.Bean;
+import org.springframework.stereotype.Component;
+
+import sample.rs.service.HelloService;
+
+@SpringBootApplication
+@EnableEurekaClient
+@EnableJaxRsProxyClient
+public class SampleRestClientApplication {
+    public static void main(String[] args) {
+        new SpringApplicationBuilder(SampleRestClientApplication.class)
+            .web(false)
+            .run(args);
+    }  
+    @Bean
+    CommandLineRunner initProxyClient(final HelloService service) {
+      
+      return new CommandLineRunner() {
+        @Override
+        public void run(String... runArgs) throws Exception {
+            System.out.println(service.sayHello("ApacheCxfProxyUser1"));
+            System.out.println(service.sayHello("ApacheCxfProxyUser2"));
+        }
+      };
+    }
+
+    /**
+     * Basic Random selection of statically prepared addresses.
+     * More advanced strategies will periodically pull DiscoveryClient
+     * to update the addresses list
+     */
+    @Component
+    @Provider(Type.Feature)
+    static class EurekaFailoverFeature extends CircuitBreakerFailoverFeature {
+        @Autowired
+        DiscoveryClient discoveryClient;
+        List<String> addresses = new LinkedList<String>();
+        
+        public EurekaFailoverFeature() {
+            super("eureka://registry");
+        }
+        
+        @Override
+        public FailoverStrategy getStrategy()  {
+            for (ServiceInstance s : discoveryClient.getInstances("jaxrs-hello-world-service")) {
+                UriBuilder ub = UriBuilder.fromUri(s.getUri());
+                if (s.getMetadata().containsKey("servletPath")) {
+                    ub.path(s.getMetadata().get("servletPath"));
+                }
+                addresses.add(ub.build().toString());
+            }
+            RandomStrategy rs = new RandomStrategy();
+            rs.setAlternateAddresses(addresses);
+            return rs;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/cxf/blob/11e18bf5/distribution/src/main/release/samples/jax_rs/spring_boot_scan/client/src/main/java/sample/rs/service/HelloService.java
----------------------------------------------------------------------
diff --git a/distribution/src/main/release/samples/jax_rs/spring_boot_scan/client/src/main/java/sample/rs/service/HelloService.java b/distribution/src/main/release/samples/jax_rs/spring_boot_scan/client/src/main/java/sample/rs/service/HelloService.java
new file mode 100644
index 0000000..706b054
--- /dev/null
+++ b/distribution/src/main/release/samples/jax_rs/spring_boot_scan/client/src/main/java/sample/rs/service/HelloService.java
@@ -0,0 +1,34 @@
+/**
+ * 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.
+ */
+package sample.rs.service;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+ 
+@Path("/sayHello")
+public interface HelloService {
+ 
+    @GET
+    @Path("/{a}")
+    @Produces(MediaType.TEXT_PLAIN)
+    String sayHello(@PathParam("a") String a);
+    
+}

http://git-wip-us.apache.org/repos/asf/cxf/blob/11e18bf5/distribution/src/main/release/samples/jax_rs/spring_boot_scan/client/src/main/resources/application.yml
----------------------------------------------------------------------
diff --git a/distribution/src/main/release/samples/jax_rs/spring_boot_scan/client/src/main/resources/application.yml b/distribution/src/main/release/samples/jax_rs/spring_boot_scan/client/src/main/resources/application.yml
new file mode 100644
index 0000000..f74a0a7
--- /dev/null
+++ b/distribution/src/main/release/samples/jax_rs/spring_boot_scan/client/src/main/resources/application.yml
@@ -0,0 +1,12 @@
+cxf:
+  jaxrs:
+    client:
+      address: eureka://registry
+      classes-scan-packages: sample.rs.service
+
+eureka:
+  client:
+    registerWithEureka: false
+    serviceUrl:
+      defaultZone: http://127.0.0.1:8761/eureka/
+