JAX-WS RI, parametry inicjujące

0

Jak pobrać parametry inicjujące z web.xml, dla Web Service (jax-ws ri)

O ile w servlecie dla:

...
 <init-param>
      	<param-name>param1</param-name>
        	<param-value>4</param-value>
</init-param>
...

Wystarczyło przeciążyć metode init:

public void init(ServletConfig config) throws ServletException {
      	super.init(config);
      	String param1 = config.getInitParameter("param1");
}

To jak zrobić to samo dla @WebService ?

0

Zgodnie ze specyfikacja uslug sieciowych (JSR-109), mozna to zrobic poprzez element <env-entry /> umieszczony w deskryptorze aplikacji. Dostep uzyskuje sie albo poprzez adnotacje @Resource, albo z poziomu JNDI. Np.:

web.xml

<web-app>
...
    <env-entry>
        <env-entry-name>myEnvValue</env-entry-name>
        <env-entry-type>java.lang.String</env-entry-type>
        <env-entry-value>ENV-VAR</env-entry-value>
    </env-entry>
</web-app>

WebServiceHello.java

import javax.annotation.Resource;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.xml.ws.WebServiceException;

@WebService()
public class WebServiceHello {
    @Resource(name="myEnvValue")
    private String env;
    
    @WebMethod
    public String hello() {
        try {
            Context ctx = (Context)new InitialContext().lookup("java:comp/env");
            String env2 = (String) ctx.lookup("myEnvValue");
            return String.format("Injected: %s - JNDI: %s", env, env2);
        } catch(Exception e) {
            throw new WebServiceException(e);
        }
    }
}
0

Wielkie dzięki poraz drugi.

Działa jak init w servlecie gdy da się @PostConstruct

1 użytkowników online, w tym zalogowanych: 0, gości: 1