1

Používame Spring Web Services

 2 years ago
source link: https://novotnyr.github.io/scrolls/pouzivame-spring-ws/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
Používame Spring Web Services

Používame Spring Web Services

2009/06/23

package sk.novotnyr.movie;

import java.util.Date;

public class MovieReservation {

  protected String title;
  protected Date date;
  protected int numberOfTickets;

  // gettre a settre
}

Stiahneme Spring-WS. Do classpath:

  • activation.jar
  • commons-logging-1.1.1.jar
  • log4j-1.2.15.jar
  • saaj-api-1.3.jar
  • saaj-impl-1.3.jar
  • spring-web.jar
  • spring-webmvc.jar
  • spring-ws-1.5.2.jar
  • spring.jar
  • stax-api-1.0.1.jar
  • xstream-1.3.jar

Kostra webovej aplikácie: web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
         version="2.4">

    <servlet>
        <servlet-name>spring-ws</servlet-name>
        <servlet-class>org.springframework.ws.transport.http.MessageDispatcherServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>spring-ws</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

</web-app>

spring-ws-servlet.xml

<?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-2.0.xsd">
 	<bean id="movieReservationEndpoint" class="sk.novotnyr.movie.ws.XStreamMovieReservationEndpoint" />
 	
	<bean id="endpointMapping" class="org.springframework.ws.server.endpoint.mapping.UriEndpointMapping">
		<property name="mappings">
			<props>
				<prop key="http://localhost:8080/movie/ws/reservation">movieReservationEndpoint</prop>
			</props>
		</property>
	</bean>
    
</beans>

Dokument pre požiadavku

<?xml version="1.0" encoding="UTF-8"?>

<movieReservationRequest>
  <title>Battlestar Galactica</title>
  <date>2008-12-24</date>
  <numberOfTickets>4</numberOfTickets>  
</movieReservationRequest>

log4j.properties

log4j.rootCategory=INFO, stdout
log4j.logger.org.springframework.ws=DEBUG
log4j.logger.org.springframework.ws.client.MessageTracing.sent=TRACE
log4j.logger.org.springframework.ws.client.MessageTracing.received=TRACE

log4j.logger.org.springframework.ws.server.MessageTracing=TRACE

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%p [%c{3}] %m%n

Endpoint

package sk.novotnyr.movie.ws;

import org.springframework.oxm.xstream.XStreamMarshaller;
import org.springframework.ws.server.endpoint.AbstractMarshallingPayloadEndpoint;

import sk.novotnyr.movie.MovieReservation;

import com.thoughtworks.xstream.converters.basic.DateConverter;

public class XStreamMovieReservationEndpoint extends AbstractMarshallingPayloadEndpoint {
  
  @Override
  protected Object invokeInternal(Object object) throws Exception {

    MovieReservation movieReservationRequest = (MovieReservation) object;
    System.out.println(movieReservationRequest.getTitle());
    System.out.println(movieReservationRequest.getDate());
    System.out.println(movieReservationRequest.getNumberOfTickets());

    // one-way messages return null
    return null;
  }

  @Override
  public void afterPropertiesSet() throws Exception {
    super.afterPropertiesSet();

    XStreamMarshaller marshaller = new XStreamMarshaller();
    marshaller.addAlias("movieReservationRequest", MovieReservation.class);
    marshaller.getXStream().registerConverter(new DateConverter("yyyy-DD-mm", new String[]{}));
    
    setMarshaller(marshaller);
    setUnmarshaller(marshaller);

  }
  
}

Klient

package sk.novotnyr.movie.ws;

import java.io.FileReader;

import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;

import org.springframework.ws.client.core.WebServiceTemplate;

public class Client {
  
  public static void main(String[] args) throws Exception {
    WebServiceTemplate webServiceTemplate = new WebServiceTemplate();
    webServiceTemplate.setDefaultUri("http://localhost:8080/movie/ws/reservation");
    
   
    StreamSource source = new StreamSource(new FileReader("D:\\Projects\\movie-ws\\web\\WEB-INF\\xml\\movieReservationRequest.xml"));
    StreamResult result = new StreamResult(System.out);
    webServiceTemplate.sendSourceAndReceiveToResult(source, result);        

  }
}

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK