On Friday 17 December 2004 22:53, Andy Kriger wrote:

> For example, let's say I have webservice methods implemented by a
> class called BusyBee. I want to grab the ID of the MessageContext
> Session and use that as a key in my BusyBee.doSomething() method. I
> could call MessageContext.getCurrentContext() in the method, but that
> breaks the separation of concerns. So I have a method
> BusyBee.setSessionId(). How can I call that method and apply the
> MessageContext Session info from outside of BusyBee?

It isn't absolutely necessary that your BusyBee class is the one that's 
actually exposed as a web service, or is it? Then how about this

public interface BusyBee {
    void someMethod();
    void setSessionId(long id);
}

public class BusyBeeImpl {
    void someMethod() { ... }
    void setSessionId(long id) { ... }
}

public class BusyBeeService implements BusyBee {
    private final BusyBee _bee = new BusyBeeImpl();
    public void someMethod() {
        MessageContext ctx = MessageContext.getCurrentContext();
        ...
        _bee.setSessionId(...);
        _bee.someMethod();
    }
}


In case you're using the Spring framework you could do something like 
this

public class BusyBeeService extends ServletEndpointSupport 
 implements BusyBee {
    private BusyBee _bee;

    protected void onInit() {
        ApplicationContext ac = getWebApplicationContext();
        _bee = (BusyBee)ac.getBean("busybee");
    }

    public void someMethod() {
        MessageContext ctx = MessageContext.getCurrentContext();
        ...
        _bee.setSessionId(...);
        _bee.someMethod();
    }
}


Michael

-- 
Michael Schuerig                      They tell you that the darkness
mailto:[EMAIL PROTECTED]                  Is a blessing in disguise
http://www.schuerig.de/michael/           --Janis Ian, From Me To You

Reply via email to