sk.stefan.remserver.serviceImpl.MsgDelivererImpl.java Source code

Java tutorial

Introduction

Here is the source code for sk.stefan.remserver.serviceImpl.MsgDelivererImpl.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package sk.stefan.remserver.serviceImpl;

import javax.annotation.Resource;
import javax.jws.WebService;
import javax.servlet.ServletContext;
import javax.xml.ws.WebServiceContext;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import sk.stefan.projekt.activemq.Consumer;
import sk.stefan.projekt.cxf.MsgDeliverer;
import sk.stefan.projekt.cxf.MsgWrapper;

/**
 *
 * @author stefan
 */
@WebService
public class MsgDelivererImpl implements MsgDeliverer {

    //    @Autowired - does not work
    private Consumer consumer;

    @Resource
    private WebServiceContext context;

    /**
     *
     * @param wrap
     * @return
     */
    @Override
    public String deliverMessage(MsgWrapper wrap) {

        //instead of autowired, that doesnt work.:
        this.wireBeans();

        consumer.setQueueName(wrap.getQueue());

        consumer.run();

        String msg = consumer.getMsg();

        return msg;
    }

    /**
     * Instead of @Autowired/ extends SpringBeanAutowiringSupport which doesn't work.
     */
    private void wireBeans() {

        ServletContext servletContext;
        servletContext = (ServletContext) context.getMessageContext().get("javax.xml.ws.servlet.context");
        WebApplicationContext webApplicationContext = WebApplicationContextUtils
                .getRequiredWebApplicationContext(servletContext);
        consumer = (Consumer) webApplicationContext.getAutowireCapableBeanFactory().getBean("consumer");

    }

    //    ***********************
    //    GETTERS AND SETTERS:
    //    ***********************

    public Consumer getConsumer() {
        return consumer;
    }

    public void setConsumer(Consumer consumer) {
        this.consumer = consumer;
    }

    public WebServiceContext getContext() {
        return context;
    }

    public void setContext(WebServiceContext context) {
        this.context = context;
    }

}