11. Step-9. A Custom externalizer :: 2015/04/08 13:09

우리의 application에서 clustering 소개할 , key value 대한 serializable 대한 필요성에 초점을 맞췄다. 그러나 Infinispan에서는 표준 Java Serialization 사용하지 않는다. 훨씬 높은 performance library Jboss Marshalling 사용한다. 일반적으로 여러분의 entity java.io.Serializable 구현하기 위해서 아무것도 필요가 없다. Jboss Marshalling 여러분을 위해서 모든 것이 고려되어 있다. 그러나 프로젝트의 lifetime 동안 변경되는 entry 대해서 backward / forward 호환성을 지원하기 위한 예제를 위해 경우에 따라 serialization format 대해서 모든 제어를 수행하기를 원하는 경우가 있을 있다.


이런 경우에는 custom Externalizer 제공해야 한다. Externalizer stream 통해 여러분의 entity 어떻게 읽고 쓰는지를 아는 단순한 class이다. 우리의 LocationWeather class 위해서 간단한 externalizer 만들어 보자.


public static class LWExternalizer implements Externalizer<LocationWeather> {

@Override

public void writeObject(ObjectOutput output, LocationWeather object) throws IOException {

output.writeFloat(object.temperature);

output.writeUTF(object.conditions);

output.writeUTF(object.country);

}

@Override

public LocationWeather readObject(ObjectInput input) throws IOException, ClassNotFoundException {

float temperature = input.readFloat();

String conditions = input.readUTF();

String country = input.readUTF();

return new LocationWeather(temperature, conditions, country);

}

}



또한 externalizer 그것을 사용하도록 선언하기 위해서 우리 entity 특별한 annotation 추가해야 한다.


@SerializeWith(LocationWeather.LWExternalizer.class)

public class LocationWeather implements Serializable {



우리가 특별히 어떤 것을 것은 아니기 때문에 application 실행해보면 다른 차이점을 없다. 그러나, 이제 여러분은 엔진룸 (under the hood)에서 발생한 것에 대한 좋은 아이디어를 가지게 되었다.


git checkout -f step-9

mvn clean package exec:exec # from terminal 1

mvn exec:exec # from terminal 2


이제 우리는 흥미로운 어떤 것과 씨름할 준비가 되었다. 우리는 단지 데이터를 저장하고 조회하는 대신에 data 가지고 어떤 것을 수행하는데 infinispan 사용해볼 것이다.

2015/04/08 13:09 2015/04/08 13:09
Trackback Address :: http://www.yongbi.net/trackback/676
[로그인][오픈아이디란?]
오픈아이디로만 댓글을 남길 수 있습니다
Name
Password
Homepage

Secret
< PREV |  1  |  ...  126  |  127  |  128  |  129  |  130  |  131  |  132  |  133  |  134  |  ...  566  |  NEXT >