태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

Spring Jetty 통합

2009/06/05 16:08
JettyJetty Embeding에서 포스팅한 것 처럼 프로그램에 임베딩이 가능한 Web Server/라이브러리이다.

요즘 Spring에 맛을 들인 후 여기저기 뒤적뒤적 하고 있는데... Spring과 Jetty를 통합하는 예제를 우연찮게 발견했다.

Christopher J. Stehno라는 분의 포스팅을 보면 매우 쉽고 간결하게 통합할 수 있는 예제가 있다. Spring의 위력을 절감하게 되는 부분이다.

- Spring 설정
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="server.Server" class="org.mortbay.jetty.Server" destroy-method="stop">
        <property name="threadPool">
            <bean class="org.mortbay.thread.QueuedThreadPool">
                <property name="maxThreads" value="100" />
            </bean>
        </property>
        <property name="connectors">
            <list>
                <bean class="org.mortbay.jetty.nio.SelectChannelConnector">
                    <property name="port" value="8080" />
                    <property name="maxIdleTime" value="30000" />
                </bean>
            </list>
        </property>
        <property name="handler">
            <bean class="org.mortbay.jetty.handler.HandlerCollection">
                <property name="handlers">
                    <list>
                        <ref local="server.ContextHandlerCollection" />
                        <bean class="org.mortbay.jetty.handler.DefaultHandler" />
                        <bean class="org.mortbay.jetty.handler.RequestLogHandler">
                            <property name="requestLog">
                                <bean class="org.mortbay.jetty.NCSARequestLog">
                                    <constructor-arg value="cfg/logs/jetty-yyyy_mm_dd.log" />
                                    <property name="extended" value="false"/>
                                </bean>
                            </property>
                        </bean>
                    </list>
                </property>
            </bean>
        </property>

        <property name="userRealms">
            <list>
                <bean class="org.mortbay.jetty.security.HashUserRealm">
                    <property name="name" value="Test Realm" />
                    <property name="config" value="cfg/etc/realm.properties" />
                </bean>
            </list>
        </property>

        <property name="stopAtShutdown" value="true" />
        <property name="sendServerVersion" value="true"/>
    </bean>

    <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
        <property name="targetObject" ref="server.Server" />
        <property name="targetMethod" value="addLifeCycle" />
        <property name="arguments">
            <list><ref local="server.ContextDeployer" /></list>
       </property>
    </bean>

    <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
        <property name="targetObject" ref="server.Server" />
        <property name="targetMethod" value="addLifeCycle" />
        <property name="arguments">
            <list><ref local="server.WebAppDeployer" /></list>
       </property>
    </bean>

    <bean id="server.ContextHandlerCollection" class="org.mortbay.jetty.handler.ContextHandlerCollection" />

    <bean id="server.ContextDeployer" class="org.mortbay.jetty.deployer.ContextDeployer">
        <property name="contexts" ref="server.ContextHandlerCollection" />
        <property name="configurationDir">
            <bean class="org.mortbay.resource.FileResource">
                <constructor-arg value="file://./cfg/contexts" />
            </bean>
        </property>
        <property name="scanInterval" value="1" />
    </bean>

    <bean id="server.WebAppDeployer" class="org.mortbay.jetty.deployer.WebAppDeployer">
        <property name="contexts" ref="server.ContextHandlerCollection" />
        <property name="webAppDir" value="cfg/webapps" />
        <property name="parentLoaderPriority" value="false" />
        <property name="extract" value="true" />
        <property name="allowDuplicates" value="false" />
        <property name="defaultsDescriptor" value="cfg/etc/webdefault.xml" />
    </bean>
</beans>

- Main Class
public class Main {
    public static void main(String[] args) throws Exception {
        ApplicationContext context = new FileSystemXmlApplicationContext("cfg/server-context.xml");
        Server server = (Server)context.getBean("server.Server");
        server.start();
        server.join();
    }
}

여기서 설정 몇가지만 변경해 주면... 웹서버가 만들어진다.
기존에 만들었던 Embed된 소스에 즉시 적용해 봐야겠다.
이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License

'Java' 카테고리의 다른 글

Spring Jetty 통합  (0) 2009/06/05
Core Spring - Spring Framework Training in SEOUL  (0) 2009/01/29
Velocity 1.6 정식 버전 Release되었네.  (0) 2008/12/03
Velocity 1.6 Beta1이 발표 되었네.  (0) 2008/09/26
IIS와 Tomcat 연동  (0) 2008/07/29
Jetty Embeding  (0) 2008/06/24

피그몽 Java jetty, Spring

Google AppEngine이 Java까지 지원한다고 한다. 굿~!

2009/04/09 11:22
클라우드 컴퓨팅은 근래(약 2007년 이후 부터) 대두되기 시작한 컴퓨팅 플랫폼이다.
지금까지 다양한 서비스가 시도되고 있고 유명한 서비스들을 나열해 보면
Amazon EC2서비스, Microsoft Azure 서비스, Google AppEngine이 있다. (각각의 비교는 http://xguru.net/blog/488.html에서 잘 설명이 되어있다.)

Google AppEngine은 구글이 야심차게 2008년부터 베타서비스를 시작했던 클라우드 컴퓨팅 서비스 환경이다. 이 서비스는 구글 자체에서 사용하는 BigTable등의 분산환경을 십분 활용할 수 있다고 한다.

그 전에는 Python만 지원하는 것 같았는데... 오늘 김형준님의 블로그를 보던중 Java를 지원하기 시작했다는 것을 알게 되었다.

내용을 살펴보니 Java Standard Servlet을 지원, 현재 Eclipse 플러그인을 지원하고, SDK를 지원하고 있다.

예전부터 계정은 따놓고 Python을 공부할 기회가 되지 않아서 묵혀두고 있었는데... 새로 한번 시작해 봐야겠다.
이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License

피그몽 Web2.0 appengine, google appengine

각종 Flash 동영상 플레이어...

2009/04/01 11:17
오래전부터 Flash 동영상 (.flv) 재생쪽에 관심이 생겨서 몇가지 찾던중 소스를 제공하는 쓸만한 녀석들을 발견했다. 몇가지만 나열해 보면

1. Flowplayer - http://flowplayer.org/index.html

특징
UI가 깔끔하다. 
플러그인을 통해서 기능을 확장할 수 있다.
스킨을 제공한다.
javascript를 통해서 거의 대부분의 플레이어 컨트롤이 가능하다.
오픈소스 라이센스도 제공하는데.. 상업용 프로젝트에도 사용이 가능하다.
소스를 제공한다. (GPL 3.0)

2. JWPlayer - http://www.longtailvideo.com/

특징
UI가 심플하다.
플러그인을 통해서 기능을 확장할 수 있다.
javascript를 통해서 플레이어 컨트롤이 가능하다.
비상업용도로 사용이 가능하고 상업용도로 사용하려면 라이센스가 필요하다. (광고가 들어가거나, 브랜드 홍보용 사이트 등)
실버라이트 버전(WMV 파일 play)도 있다.
소스를 제공한다.

3. OpenVideoPlayer - http://www.openvideoplayer.com/
특징
UI가 깔끔하다.
플러그인을 통해서 기능을 확장할 수 있다.
스킨을 제공한다.
swc(플래시 컴포넌트)파일형태로 제공된다.
실버라이트 버전(WMV 파일 play)도 있다.
소스를 제공한다. (BSD)


선택이야 아무래도 소스 사용에 제한이 없는 것이 나을거 같다. 뭐 성능이야 거기서 거기니까 상관없다.
3번 추천!
저작자 표시 변경 금지
이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License

피그몽 Development FLV Player