'프로그래밍'에 해당되는 글 100건

  1. 2013/07/16 용비 Infinispan 5.2 Multi-Node Clustering
  2. 2013/07/11 용비 Jetty 8.1.11 Embedded Java Application
  3. 2013/07/06 용비 Jetty를 이용한 간단한 WAS 만들기
  4. 2013/07/03 용비 Java NIO의 진실
  5. 2013/07/02 용비 Java NIO를 이용한 Command Line Interface
Infinispan을 Multi-Node간 Clustering을 묶기 위해서 jgroups-tcp.xml을 적용했다.
그런데 Cent OS 5.4에서 특정 port에 대해 방화벽 오픈하는 것을 실패했다.
기본적으로 Infinispan에서 random port를 이용하기 때문인데,
찾아보니 설정에서 FD_SOCK 엘리먼트의 start_port를 적어주고 그 port에 대해 방화벽을 열면 된다는데....
도저히 안 된다.

그래서 그냥 OS Security Level을 Disable로 설정하고 나니 Clustering이 잘 된다..-.-
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://www.yongbi.net/rss/response/569

Jetty를 Embedding하여 RESTful API를 제공하는 Java Application을 작성하였다.
Jetty의 Distribution Version은 8.1.11.

Jersey Version : 1.8

<Main.java>
public class Main {

/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {

//Jetty Server Start for RESTful Service
JettyServer jettyServer = new JettyServer();

if (!jettyServer.isStarted())
jettyServer.start();
}

}

<JettyServer.java>
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.ContextHandlerCollection;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;

import com.sun.jersey.api.core.PackagesResourceConfig;
import com.sun.jersey.spi.container.servlet.ServletContainer;

public class JettyServer {

private Server server;
public JettyServer() {
this(8080);
}
public JettyServer(Integer port) {
server = new Server(port);
server.setStopAtShutdown(true);
server.setSendServerVersion(true);
ServletContextHandler handler = new ServletContextHandler(ServletContextHandler.SESSIONS);
handler.setContextPath("/");
handler.addServlet(new ServletHolder(new ServletContainer(new PackagesResourceConfig("restful_resource_package"))), "/");
server.setHandler(handler);
}
public void setHandler(ContextHandlerCollection contexts) {
server.setHandler(contexts);
}
public void start() throws Exception {
server.start();
}
public void stop() throws Exception {
server.stop();
server.join();
}
public boolean isStarted() {
return server.isStarted();
}
public boolean isStopped() {
return server.isStopped();
}
}

한가지 유의할 사항은, Jersey Annotation을 사용하여 작성할 모든 Resource는 restful_resource_package에 작성되어야 한다는 것이다.
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://www.yongbi.net/rss/response/568

프로젝트를 진행하면서 다음 요건을 충족시켜야 하는 Web Application을 만들어야 한다.

1. RESTful API 제공
2. Embedded Distributed Infinispan Memory Grid
3. Infinispan에 Data CRUD

위의 3가지를 모두 만족시키기 위해서 처음에는 Jboss AS 7.1.1.Final을 이용하려고 했으나
아쉽게도 Jboss에 내장되어 있는 Infinispan의 Version과 Java NIO를 이용하여 구현한 Socket Server에 내장되어 있는 Infinispan의 Version이 서로 달라 Clustering으로 묶이지 않았다.

그래서 결국, Jetty를 이용하여 RESTful API를 제공하고, Infinispan을 내장하고 있는 Java Application을 별도로 만들기로 했다.

프로그램으로 먹고 사는 사람들이 생각하는 바는 비슷한가 보다.
필요에 의해서 WAS와 같은 무거운 툴이 아닌 필요한 기능만 제공하는 것이 없을까 찾아보니 이미 Jetty를 Open Source Project로 제공하고 있다니...

오늘날 시대의 변화에 발맞춰 따라가려면 역시 이것저것 세상이 돌아가는 Trend를 잘 알고 있어야겠다는 생각이 문득 든다.
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://www.yongbi.net/rss/response/567

Java NIO의 진실

Articles 2013/07/03 10:29 용비
Java NIO.
NIO의 진정한 의미는 Non-Blocking IO가 아니라 JDK 1.4 이후로 포함된 New IO라는 의미....
지금까지 잘못알고 있었넹...
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://www.yongbi.net/rss/response/566

현재 만들고 있는 플랫폼에서 Management 기능을 제공하기 위해 필요한 것이 Event 기반 표준 IO를 컨트롤 하는 것이다.

Event 기반 Command-Line Interface를 만들기 위해서 이것저것 찾아보니 NIO를 이용해서 가능할 것 같다.

이거 아무래도 Java I/O를 Event기반으로 처리하려면 Java NIO를 공부해야겠다는 생각이 든다.

근데, 다 만들고 나서 Source를 Open해도 되려나..?
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://www.yongbi.net/rss/response/565