2016-05-27 7 views
0

apache camelの新機能です。そして、私はapache camelを使って簡単な作業をしたいと思います。私はこのURLで利用可能なjsonデータを持っていますhttp://localhost:8080/users/。私の休憩サービスのjsonデータがあります。しかし、私はこのjsonデータを取得し、apache camelを使用してPOJOに非マーシャルし、txtファイルにいくつかのデータを書き込む必要があります。しかし、私のアプリが起動して停止しません。ここでapache camelのアンマーシャリング(JSON)

http://localhost:8080/users/

[{"id":1,"login":"admin","password":"admin","passwordAgain":null,"email":"[email protected]","firstName":"Admin","lastName":"Adminovich","birthday":"2010-10-10","role":{"id":1,"name":"admin"}}, 
 
{"id":5,"login":"Snow123","password":"1111","passwordAgain":null,"email":"[email protected]","firstName":"John","lastName":"Snow","birthday":"2010-10-10","role":{"id":2,"name":"user"}}]

spring.xml

<beans xmlns="http://www.springframework.org/schema/beans" 
 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 
     xmlns:camel="http://camel.apache.org/schema/spring" 
 
     xsi:schemaLocation=" 
 
      http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
 
      http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd"> 
 
    
 

 
    <bean id="MyRouteBuilder" class="MyRouteBuilder" init-method="restart"> 
 

 
    </bean> 
 

 
    <camelContext xmlns="http://camel.apache.org/schema/spring"> 
 

 
     <routeBuilder ref="MyRouteBuilder"/> 
 

 
    </camelContext> 
 

 
</beans>

に私のJSONデータが利用可能であるMyRouteBuilder

import Mapping.User; 
 
import Mapping.Users; 
 
import org.apache.camel.Exchange; 
 
import org.apache.camel.Processor; 
 
import org.apache.camel.builder.RouteBuilder; 
 
import org.apache.camel.main.Main; 
 
import org.apache.camel.component.restlet.RestletConstants; 
 
import org.apache.camel.model.dataformat.JsonLibrary; 
 
import org.restlet.Response; 
 
import org.restlet.data.MediaType; 
 
import org.restlet.data.Status; 
 

 

 

 
public class MyRouteBuilder extends RouteBuilder { 
 

 
    private String routePort = null; 
 
    private String routeAnswer = null; 
 

 
    public void restart() { 
 
     String start = "Route Property Placeholder Example started on port" + " 8080" + "!"; 
 
     System.out.println(start); 
 
    } 
 

 
    public void configure() throws Exception { 
 
     from("timer:foo?repeatCount=1").to("http://10.10.34.145:8080/users/").unmarshal().json(JsonLibrary.Jackson, Users.class).log("STARTED!") 
 
       .process(new Processor() { 
 
        public void process (Exchange exchange) throws Exception { 
 
         Users usersList = exchange.getIn().getBody(Users.class); 
 
         exchange.getIn().setBody(usersList.usersList); 
 
         System.out.println(usersList.usersList.size()); 
 
        } 
 
       }).to("file:///home/name/username/Desktop/camel.txt").stop(); 
 

 
    } 
 
}

ユーザー

package Mapping; 
 

 
import com.google.gson.FieldNamingStrategy; 
 

 
import java.lang.reflect.Field; 
 

 
public class User { 
 

 
    public User() { 
 

 
    } 
 

 
    private int id; 
 
    private String login; 
 
    private String password; 
 
    private String passwordAgain; 
 
    private String email; 
 
    private String firstName; 
 
    private String lastName; 
 
    private String birthday; 
 

 
    public void setId(int id) { 
 
     this.id = id; 
 
    } 
 

 
    public void setLogin(String login) { 
 
     this.login = login; 
 
    } 
 

 
    public void setPassword(String password) { 
 
     this.password = password; 
 
    } 
 

 
    public void setPasswordAgain(String passwordAgain) { 
 
     this.passwordAgain = passwordAgain; 
 
    } 
 

 
    public void setEmail(String email) { 
 
     this.email = email; 
 
    } 
 

 
    public void setFirstName(String firstName) { 
 
     this.firstName = firstName; 
 
    } 
 

 
    public void setLastName(String lastName) { 
 
     this.lastName = lastName; 
 
    } 
 

 
    public void setBirthday(String birthday) { 
 
     this.birthday = birthday; 
 
    } 
 

 
    public void setRole(String role) { 
 
     this.role = role; 
 
    } 
 

 
    public int getId() { 
 
     return id; 
 
    } 
 

 
    public String getLogin() { 
 
     return login; 
 
    } 
 

 
    public String getPassword() { 
 
     return password; 
 
    } 
 

 
    public String getPasswordAgain() { 
 
     return passwordAgain; 
 
    } 
 

 
    public String getEmail() { 
 
     return email; 
 
    } 
 

 
    public String getFirsteName() { 
 
     return firstName; 
 
    } 
 

 
    public String getLastName() { 
 
     return lastName; 
 
    } 
 

 
    public String getBirthday() { 
 
     return birthday; 
 
    } 
 

 
    public String getRole() { 
 
     return role; 
 
    } 
 

 
    private String role; 
 

 
}

ユーザー

package Mapping; 
 

 
import java.util.ArrayList; 
 
import java.util.List; 
 
public class Users { 
 

 
    public List<User> usersList = new ArrayList<User>(); 
 
}
私の場合は メイン

import org.apache.camel.main.Main; 
 

 
public class MainClass { 
 

 
    public static void main(String[] args) { 
 
     Main main = new Main(); 
 
     main.enableHangupSupport(); 
 

 
     MyRouteBuilder rb = new MyRouteBuilder(); 
 
     main.addRouteBuilder(rb); 
 
     try { 
 
      main.run(args); 
 
     } catch (Exception e) { 
 
      e.printStackTrace(); 
 
     } 
 
    } 
 

 
}

+0

どういう意味ですか、止まらないのですか?何かエラーがありますか?あなたはルートを実行するとどうなりますか? –

+0

アプリが停止しません。私はランタイムエラーがありません。 – oo000

答えて

0

私は、JavaオブジェクトにJsonDataを変換し、次の依存関係を使用して、カスタムCSVファイルを作成しました。

  • ジャクソンマッパー-ASL
  • ジャクソンコア-ASL

あなたはそれが何であれ、単純なテキストファイルやCSVを作成することができます。 これは私のルートです:

from("couchdb:http://localhost:5984/order") 
      .startupOrder(1) 
      .process(new JsonToCsvProcessor()) 
      .to("file:/home/r2/Desktop/ofBizFile?fileExist=append&fileName=orders-${date:now:dd-MM-yyyy}.csv"); 

は、これは私がPOJOのためObjectMapperにJsonStringを渡しています私のプロセッサである:

{ 

public void process(Exchange exchange)throws Exception{ 
    String jsonString = exchange.getIn().getBody(String.class); 
    exchange.getOut().setBody(convertJsonToCSV(jsonString).toString()); 
     } 

public StringBuilder convertJsonToCSV(String jsonStringArgs){ 

StringBuilder csvFile = new StringBuilder(); 
//Here customize data format using append() 
.  
. 
return csvFile; 
    } 

} 

このリンクをObjectMapper使用する方法がわからない場合はあなたを助けます。 https://www.youtube.com/watch?v=02X6U81MdJ0&t=1s