Good morning.
I'm developing a web services using spring 2.5.6 and JAXB.
I have read all post about this topic in forum, but I can't find a solution (I'm a newbee).
In code, (inside classes) I can see java.lang.IllegalStateException:, but in console shows me:
My files:Code:Exception in thread "main" org.springframework.ws.soap.client.SoapFaultClientException: No adapter for endpoint [
Spring-ws-servlet
my XSD file:Code:<?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.5.xsd"> <bean id="weatherService" class="com.apress.springrecipes.weather.WeatherServiceImpl" /> <bean class="org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping" /> <bean class="org.springframework.ws.server.endpoint.adapter.MarshallingMethodEndpointAdapter"> <property name="marshaller" ref="marshaller" /> <property name="unmarshaller" ref="marshaller" /> </bean> <bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb1Marshaller"> <property name="contextPath"> <value>com.apress.springrecipes.weather.schemas</value> </property> </bean> <bean id="temperatureEndpoint" class="com.apress.springrecipes.weather.TemperatureMarshallingEndpoint"> <property name="weatherService" ref="weatherService" /> </bean> <bean id="temperature" class="org.springframework.ws.wsdl.wsdl11.DynamicWsdl11Definition"> <property name="builder"> <bean class="org.springframework.ws.wsdl.wsdl11.builder.XsdBasedSoap11Wsdl4jDefinitionBuilder"> <property name="schema" value="/WEB-INF/xsd/weather.xsd" /> <property name="portTypeName" value="Weather" /> <property name="locationUri" value="http://localhost:8083/admision/services" /> <property name="targetNamespace" value="http://springrecipes.apress.com/weather/schemas" /> </bean> </property> </bean> </beans>
My Request:Code:<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://springrecipes.apress.com/weather/schemas" xmlns="http://springrecipes.apress.com/weather/schemas"> <xs:element name="GetTemperaturesRequest"> <xs:complexType> <xs:sequence> <xs:element name="city" type="xs:string" /> <xs:element maxOccurs="5" minOccurs="1" name="date" type="xs:date" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="GetTemperaturesResponse"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="5" minOccurs="1" name="TemperatureInfo"> <xs:complexType> <xs:sequence> <xs:element name="min" type="xs:float" /> <xs:element name="max" type="xs:float" /> <xs:element name="average" type="xs:float" /> </xs:sequence> <xs:attribute name="city" type="xs:string" use="optional" /> <xs:attribute name="date" type="xs:date" use="optional" /> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
And my endpoint.Code:// // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-2 package com.apress.springrecipes.weather.schemas; /** * <p> * Java class for anonymous complex type. * * <p> * The following schema fragment specifies the expected content contained within * this class. * * <pre> * <complexType> * <complexContent> * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> * <sequence> * <element name="city" type="{http://www.w3.org/2001/XMLSchema}string"/> * <element name="date" type="{http://www.w3.org/2001/XMLSchema}date" maxOccurs="5"/> * </sequence> * </restriction> * </complexContent> * </complexType> * </pre> * * */ @XmlAccessorType(XmlAccessType.FIELD) @XmlType(propOrder = { "city", "date" }) @XmlRootElement(namespace = "http://springrecipes.apress.com/weather/schemas", name = "GetTemperaturesRequest" ) public class GetTemperaturesRequest { @XmlElement(required = true) protected String city; @XmlElement(required = true) @XmlSchemaType(name = "date") protected List<XMLGregorianCalendar> date; /** * Gets the value of the city property. * * @return possible object is {@link String } * */ public String getCity() { return city; } /** * Sets the value of the city property. * * @param value * allowed object is {@link String } * */ public void setCity(String value) { this.city = value; } /** * Gets the value of the date property. * * <p> * This accessor method returns a reference to the live list, not a * snapshot. Therefore any modification you make to the returned list will * be present inside the JAXB object. This is why there is not a * <CODE>set</CODE> method for the date property. * * <p> * For example, to add a new item, do as follows: * * <pre> * getDate().add(newItem); * </pre> * * * <p> * Objects of the following type(s) are allowed in the list * {@link XMLGregorianCalendar } * * */ public List<XMLGregorianCalendar> getDate() { if (date == null) { date = new ArrayList<XMLGregorianCalendar>(); } return this.date; } public void setDate(List xmlCalendarList) { this.date = xmlCalendarList; } }
This is my pom (related to web services):Code:package com.apress.springrecipes.weather; import java.util.Date; import java.util.GregorianCalendar; import java.util.LinkedList; import java.util.List; import javax.xml.bind.JAXBElement; import javax.xml.datatype.DatatypeFactory; import javax.xml.datatype.XMLGregorianCalendar; import org.springframework.ws.server.endpoint.annotation.Endpoint; import org.springframework.ws.server.endpoint.annotation.PayloadRoot; import com.apress.springrecipes.weather.schemas.GetTemperaturesRequest; import com.apress.springrecipes.weather.schemas.GetTemperaturesResponse; @Endpoint public class TemperatureMarshallingEndpoint { private static final String namespaceUri = "http://springrecipes.apress.com/weather/schemas"; private WeatherService weatherService; public void setWeatherService(WeatherService weatherService) { this.weatherService = weatherService; } @PayloadRoot(localPart = "GetTemperaturesRequest", namespace = namespaceUri) public JAXBElement<GetTemperaturesResponse> getTemperature(JAXBElement<GetTemperaturesRequest> request) { // List<XMLGregorianCalendar> xmlCalendarList = request.getDate(); // // List dates = new LinkedList(); // // for (XMLGregorianCalendar xmlCalendar : xmlCalendarList) { // Date date = xmlCalendar.toGregorianCalendar().getTime(); // dates.add(date); // } // // List<TemperatureInfo> infos = weatherService.getTemperatures( // request.getCity(), dates); // // List temperatures = new LinkedList(); // // for (TemperatureInfo info : infos) { // GetTemperaturesResponse.TemperatureInfo temperature = new GetTemperaturesResponse.TemperatureInfo(); // // temperature.setAverage(info.getAverage()); // temperature.setMin(info.getMin()); // temperature.setMax(info.getMax()); // temperature.setCity(info.getCity()); // // try { // GregorianCalendar calendar = new GregorianCalendar(); // calendar.setTime(info.getDate()); // // XMLGregorianCalendar xmlCalendar = DatatypeFactory // .newInstance().newXMLGregorianCalendar(calendar); // // temperature.setDate(xmlCalendar); // // } catch (Exception e) { // e.printStackTrace(); // } //temperatures.add(temperature); //} GetTemperaturesResponse response = new GetTemperaturesResponse(); //response.setTemperatureInfo(temperatures); return null; } }
Please, I really need help with this issue.Code:<dependency> <groupId>org.springframework.ws</groupId> <artifactId>spring-ws-core-tiger</artifactId> <version>1.5.10</version> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.ws</groupId> <artifactId>spring-ws-core</artifactId> <version>1.5.10</version> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> </exclusion> </exclusions> </dependency> <!-- JAXB2 --> <dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.1</version> </dependency> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-impl</artifactId> <version>2.1.3</version> </dependency> <dependency> <groupId>org.codehaus.mojo</groupId> <artifactId>jaxb2-maven-plugin</artifactId> <version>1.5</version> </dependency>
Thanks in advance.


Reply With Quote