/** * */ package net.conselldemallorca.helium.core.util.ws; import java.util.HashMap; import java.util.Map; import javax.xml.ws.Endpoint; import org.apache.cxf.interceptor.LoggingInInterceptor; import org.apache.cxf.interceptor.LoggingOutInterceptor; import org.apache.cxf.jaxws.EndpointImpl; import org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor; import org.apache.ws.security.WSConstants; import org.apache.ws.security.handler.WSHandlerConstants; /** * Utilitat per a configurar de manera centralitzada * tots els clients ws * * @author Limit Tecnologies */ public class WsServerUtils { public static Endpoint publish( String address, Object implementor, String wsUserName, String wsPassword, String authType, boolean generateTimestamp, boolean logCalls) { Endpoint jaxwsEndpoint = Endpoint.publish(address, implementor); EndpointImpl jaxwsEndpointImpl = (EndpointImpl)jaxwsEndpoint; org.apache.cxf.endpoint.Server server = jaxwsEndpointImpl.getServer(); org.apache.cxf.endpoint.Endpoint endpoint = server.getEndpoint(); if (logCalls) { endpoint.getInInterceptors().add(new LoggingInInterceptor()); endpoint.getOutInterceptors().add(new LoggingOutInterceptor()); } if ("USERNAMETOKEN".equalsIgnoreCase(authType)) { Map<String, Object> wss4jInterceptorProps = new HashMap<String, Object>(); if (generateTimestamp) { wss4jInterceptorProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.TIMESTAMP + " " + WSHandlerConstants.USERNAME_TOKEN); } else { wss4jInterceptorProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN); } wss4jInterceptorProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT); ServerPasswordCallback sp = new ServerPasswordCallback(); sp.setUserName(wsUserName); sp.setPassword(wsPassword); wss4jInterceptorProps.put(WSHandlerConstants.PW_CALLBACK_REF, sp); endpoint.getOutInterceptors().add(new WSS4JOutInterceptor(wss4jInterceptorProps)); } return jaxwsEndpoint; } }