在@Webservice中使用@Autowired(发现其他解决方案不起作用)

时间:2013-11-05 15:16:54

标签: spring jax-ws

我们正在尝试在我们的网络服务中使用自动装配,但这似乎不起作用(生成nullPointer)。我们一直在寻找解决方案很长一段时间,但没有成功。

我们的网络服务:

@WebService(wsdlLocation = "/WEB-INF/wsdl/contract.wsdl", serviceName = "BookingService",     targetNamespace    = "http://realdolmen.com/", portName = "BookingServicePortType")
public class BookingService extends SpringBeanAutowiringSupport implements BookingServicePortType {
@Autowired
BookingServiceBean bookingServiceBean;

@Autowired
TariffService tariffService;


@Override
public BookingResponse createBooking(@WebParam(name = "bookingInput", targetNamespace = "http://realdolmen.com/", partName = "tariffId") BookingInput input) {

    Tariff tariff = tariffService.getTariffById(input.getTariffId());
    Booking booking = new Booking.BookingBuilder().withBaggageAllowance(tariff.getFlight().getBaggageAllowance())
            .withDayOfDeparture(input.getDayOfDeparture()).withHourOfDeparture(input.getHourOfDeparture()).withTariff(tariff).withDuration(input.getDuration()).createBooking();
    bookingServiceBean.createBooking(booking);

    BookingResponse bookingResponse = new BookingResponse();
    bookingResponse.setBookingId(booking.getId());
    bookingResponse.setBaggageAllowance(booking.getBaggageAllowance());
    bookingResponse.setDayOfDeparture(createWeirdDateClass(booking.getDayOfDeparture()));
    bookingResponse.setDuration(booking.getDuration());
    bookingResponse.setHourOfDeparture(booking.getHourOfDeparture());
    return bookingResponse;
}

private XMLGregorianCalendar createWeirdDateClass(String lexicalRepresentation) {
    try {
        return DatatypeFactory.newInstance().newXMLGregorianCalendar(lexicalRepresentation);
    } catch (DatatypeConfigurationException e) {
        e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        return null;
    }
}
}

我们的春季服务:

@Service
@Transactional
public class BookingServiceBeanImpl implements BookingServiceBean {

@Autowired
BookingDAO bookingDAO;

@Override public void createBooking(Booking booking) {
    bookingDAO.createBooking(booking);
}
}

弹簧豆可以用在弹簧控制器中,所以我认为那里没有问题。

0 个答案:

没有答案