środa, 7 listopada 2012

Spring MVC - ViewResolver-s

Dzisiaj omówię bliżej temat ViewRosolver-ów w Spring MVC. W poprzednim poście wspomniałem, że DispatcherSevlet korzysta z ViewResolvera aby wyrenderować odpowiedź (View). Kluczową sprawą jest zrozumienie w jaki sposób kontroler zwraca nazwę widoku do dispatcher-a.
Można to zrobić na kilka sposobów:
- nazwa na podstawie url-a:
@RequestMapping("/hello")
public void sayHello() {
...
}
szukaną nazwą widoku będzie "hello" - przez konwencję jeśli kontroler nie zwraca widoku (bądź jego nazwy) to nazwą widoku staje się url.

niedziela, 2 września 2012

Spring MVC prosty start

Spring MVC - temat obszerny i w wielu miejscach opisywany. Oto moje podejście. Zacznijmy od bardzo prostej aplikacji pokazującej serce tego modułu.
1. Zależności:
       
    <!-- Spring 3 dependencies -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>


        <!-- Servlet -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.1</version>
            <scope>provided</scope>
        </dependency>

        <!-- core taglib -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency> 

wtorek, 28 sierpnia 2012

ActiveMQ ze springiem

Dziś pokażę jak w springu można skonfigurować JMS korzystając z ActiveMQ. Teorii JMS-a nie będę omawiał, odsyłam do dokumentacji. Spring udostępnia template (podobnie jak do jdbc) pod interfejsem JmsOperations.
Zerknijmy na konfigurację:

<bean id="connectionFactory"
      class="org.apache.activemq.ActiveMQConnectionFactory">
    <property name="brokerURL" value="vm://embedded?broker.persistent=false"></property>
</bean>


<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
    <property name="connectionFactory" ref="connectionFactory"></property>
    <property name="defaultDestination" ref="testQueue"></property>
</bean>


<bean id="testQueue" class="org.apache.activemq.command.ActiveMQQueue">
    <constructor-arg value="pl.turo.spring.jms"></constructor-arg>
</bean>

piątek, 20 stycznia 2012

Spring remoting cz.1 - RMI


RMI to javowy protokół do zdalnych wywołań metod. Pokażę jak fajnie w springu można z niego skorzystać. Zatem potrzeba:
  1. Serwera RMI gdzie będzie obiekt na którym zostanie wywołana metoda.
  2. Obiektu proxy (stub) na kliencie, który będzie proxy do zdalnego wywołania.
Spring uprasza pracę dając:
  1. Po stronie serwera używa exporterów do wystawienia beanów.
  2. Po stronie klienta używa FactoryBean-ów aby utworzyć odpowiednie proxy komunikujące się z obiektem na serwerze.
  3. Łapie wyjątki i tłumaczy je na swoje (runtime-owe) - hierarchia RemoteAccessExceptions