diff options
Diffstat (limited to 'branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java')
-rw-r--r-- | branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java | 691 |
1 files changed, 0 insertions, 691 deletions
diff --git a/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java b/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java deleted file mode 100644 index bc8f562467..0000000000 --- a/branches/sca-java-1.0.1/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java +++ /dev/null @@ -1,691 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.ws.axis2; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.lang.reflect.InvocationTargetException; -import java.net.URI; -import java.net.URL; -import java.security.PrivilegedAction; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.HashMap; -import java.util.logging.Level; -import java.util.logging.Logger; - -import javax.wsdl.Definition; -import javax.wsdl.Port; -import javax.wsdl.extensions.soap.SOAPAddress; -import javax.xml.namespace.QName; -import javax.xml.stream.FactoryConfigurationError; -import javax.xml.stream.XMLInputFactory; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; -import javax.xml.transform.dom.DOMSource; - -import org.apache.axiom.om.OMElement; -import org.apache.axiom.om.OMFactory; -import org.apache.axiom.om.OMAbstractFactory; -import org.apache.axiom.om.impl.builder.StAXOMBuilder; -import org.apache.axiom.soap.SOAPHeader; -import org.apache.axis2.AxisFault; -import org.apache.axis2.Constants; -import org.apache.axis2.transport.jms.JMSSender; -import org.apache.axis2.transport.jms.JMSListener; -import org.apache.axis2.transport.jms.JMSConstants; -import org.apache.axis2.transport.jms.JMSUtils; -import org.apache.axis2.addressing.AddressingConstants; -import org.apache.axis2.addressing.EndpointReferenceHelper; -import org.apache.axis2.context.ConfigurationContext; -import org.apache.axis2.context.MessageContext; -import org.apache.axis2.deployment.DeploymentErrorMsgs; -import org.apache.axis2.deployment.DeploymentException; -import org.apache.axis2.deployment.ModuleBuilder; -import org.apache.axis2.deployment.util.Utils; -import org.apache.axis2.description.AxisEndpoint; -import org.apache.axis2.description.AxisModule; -import org.apache.axis2.description.AxisOperation; -import org.apache.axis2.description.AxisService; -import org.apache.axis2.description.Parameter; -import org.apache.axis2.description.TransportInDescription; -import org.apache.axis2.description.TransportOutDescription; -import org.apache.axis2.description.WSDL11ToAxisServiceBuilder; -import org.apache.axis2.description.WSDL2Constants; -import org.apache.axis2.description.WSDLToAxisServiceBuilder; -import org.apache.axis2.engine.AxisConfiguration; -import org.apache.axis2.engine.MessageReceiver; -import org.apache.axis2.engine.ListenerManager; -import org.apache.axis2.i18n.Messages; -import org.apache.axis2.wsdl.WSDLConstants; -import org.apache.neethi.Policy; -import org.apache.tuscany.sca.assembly.AbstractContract; -import org.apache.tuscany.sca.assembly.Binding; -import org.apache.tuscany.sca.binding.ws.WebServiceBinding; -import org.apache.tuscany.sca.binding.ws.axis2.Axis2ServiceClient.URIResolverImpl; -import org.apache.tuscany.sca.core.assembly.EndpointReferenceImpl; -import org.apache.tuscany.sca.host.http.ServletHost; -import org.apache.tuscany.sca.interfacedef.Interface; -import org.apache.tuscany.sca.interfacedef.Operation; -import org.apache.tuscany.sca.interfacedef.java.JavaInterface; -import org.apache.tuscany.sca.invocation.Message; -import org.apache.tuscany.sca.invocation.MessageFactory; -import org.apache.tuscany.sca.policy.Intent; -import org.apache.tuscany.sca.policy.PolicySet; -import org.apache.tuscany.sca.policy.PolicySetAttachPoint; -import org.apache.tuscany.sca.policy.security.ws.Axis2ConfigParamPolicy; -import org.apache.tuscany.sca.runtime.EndpointReference; -import org.apache.tuscany.sca.runtime.RuntimeComponent; -import org.apache.tuscany.sca.runtime.RuntimeComponentService; -import org.apache.tuscany.sca.runtime.RuntimeWire; - -public class Axis2ServiceProvider { - - private final static Logger logger = Logger.getLogger(Axis2ServiceProvider.class.getName()); - - private AbstractContract contract; - private WebServiceBinding wsBinding; - private ServletHost servletHost; - private MessageFactory messageFactory; - private ConfigurationContext configContext; - private JMSSender jmsSender; - private JMSListener jmsListener; - - public static final QName QNAME_WSA_ADDRESS = - new QName(AddressingConstants.Final.WSA_NAMESPACE, AddressingConstants.EPR_ADDRESS); - public static final QName QNAME_WSA_FROM = - new QName(AddressingConstants.Final.WSA_NAMESPACE, AddressingConstants.WSA_FROM); - public static final QName QNAME_WSA_TO = - new QName(AddressingConstants.Final.WSA_NAMESPACE, AddressingConstants.WSA_TO); - - public static final QName QNAME_WSA_REFERENCE_PARAMETERS = - new QName(AddressingConstants.Final.WSA_NAMESPACE, AddressingConstants.EPR_REFERENCE_PARAMETERS); - - // TODO: what to do about the base URI? - // This port number may be used to construct callback URIs. The value 8085 is used - // beacuse it matches the service port number used by the simple-callback-ws sample. - private static final String BASE_HTTP_URI = "http://localhost:8085/"; - private static final String BASE_JMS_URI = "jms:"; - - private static final String DEFAULT_QUEUE_CONNECTION_FACTORY = "TuscanyQueueConnectionFactory"; - - private static final QName TRANSPORT_JMS_QUALIFIED_INTENT = new QName("http://www.osoa.org/xmlns/sca/1.0","transport.jms"); - - private PolicySet transportJmsPolicySet = null; - - - public Axis2ServiceProvider(RuntimeComponent component, - AbstractContract contract, - WebServiceBinding wsBinding, - ServletHost servletHost, - MessageFactory messageFactory) { - - this.contract = contract; - this.wsBinding = wsBinding; - this.servletHost = servletHost; - this.messageFactory = messageFactory; - - - try { - TuscanyAxisConfigurator tuscanyAxisConfigurator = new TuscanyAxisConfigurator(); - configContext = tuscanyAxisConfigurator.getConfigurationContext(); - //deployRampartModule(); - configureSecurity(); - } catch (AxisFault e) { - throw new RuntimeException(e); // TODO: better exception - } catch ( Exception e ) { - throw new RuntimeException(e); - } - - configContext.setContextRoot(servletHost.getContextPath()); - - // pull out the binding intents to see what sort of transport is required - transportJmsPolicySet = getPolicySet(TRANSPORT_JMS_QUALIFIED_INTENT); - - String uri; - - if (transportJmsPolicySet != null){ - uri = computeActualURI(BASE_JMS_URI, component, contract).normalize().toString(); - - // construct the rest of the uri based on the policy. All the details are put - // into the uri here rather than being place directly into the Axis configuration - // as the Axis JMS sender relies on parsing the target URI - Axis2ConfigParamPolicy axis2ConfigParamPolicy = null; - for ( Object policy : transportJmsPolicySet.getPolicies() ) { - if ( policy instanceof Axis2ConfigParamPolicy ) { - axis2ConfigParamPolicy = (Axis2ConfigParamPolicy)policy; - Iterator paramIterator = axis2ConfigParamPolicy.getParamElements().get(DEFAULT_QUEUE_CONNECTION_FACTORY).getChildElements(); - - if (paramIterator.hasNext()){ - StringBuffer uriParams = new StringBuffer("?"); - - while (paramIterator.hasNext()){ - OMElement parameter = (OMElement)paramIterator.next(); - uriParams.append(parameter.getAttributeValue(new QName("","name"))); - uriParams.append("="); - uriParams.append(parameter.getText()); - - if (paramIterator.hasNext()){ - uriParams.append("&"); - } - } - - uri = uri + uriParams; - } - } - } - } else { - uri = computeActualURI(BASE_HTTP_URI, component, contract).normalize().toString(); - } - - if (uri.endsWith("/")) { - uri = uri.substring(0, uri.length() - 1); - } - wsBinding.setURI(uri); - } - - private void engageModules() throws AxisFault { - if ( wsBinding instanceof PolicySetAttachPoint ) { - PolicySetAttachPoint policiedBinding = (PolicySetAttachPoint)wsBinding; - if ( policiedBinding.getPolicySets().size() > 0 ) { - //TODO: need to verify if one of the policies are concerned with security - AxisModule m = new AxisModule("rampart"); - m.setFileName(wsBinding.getClass().getClassLoader().getResource("rampart-1.2.mar")); - configContext.getAxisConfiguration().addModule(m); - configContext.getAxisConfiguration().engageModule(m, configContext.getAxisConfiguration()); - } - } - } - - public void start() { - - // TODO: if <binding.ws> specifies the wsdl service then should create a - // service for every port - - try { - AxisService axisService = createAxisService(); - configContext.getAxisConfiguration().addService( axisService ); - - if ( axisService.getEndpointURL().startsWith( "http" ) ) { - Axis2ServiceServlet servlet = new Axis2ServiceServlet(); - servlet.init(configContext); - String servletURI = wsBinding.getURI(); - configContext.setContextRoot(servletURI); - servletHost.addServletMapping(servletURI, servlet); - } else if ( axisService.getEndpointURL().startsWith( "jms" ) ) { - logger.log(Level.INFO,"Axis2 JMS URL=" + axisService.getEndpointURL() ); - - jmsListener = new JMSListener(); - jmsSender = new JMSSender(); - ListenerManager listenerManager = configContext.getListenerManager(); - TransportInDescription trsIn = configContext.getAxisConfiguration().getTransportIn(Constants.TRANSPORT_JMS); - - // get JMS transport parameters from the binding uri - Map<String, String> jmsProps = JMSUtils.getProperties( wsBinding.getURI() ); - - // collect the parameters used to configure the JMS transport - OMFactory fac = OMAbstractFactory.getOMFactory(); - OMElement parms = fac.createOMElement(DEFAULT_QUEUE_CONNECTION_FACTORY, null); - - for ( String key : jmsProps.keySet() ) { - OMElement param = fac.createOMElement("parameter", null); - param.addAttribute( "name", key, null ); - param.addChild(fac.createOMText(param, jmsProps.get(key))); - parms.addChild(param); - } - - Parameter queueConnectionFactory = new Parameter(DEFAULT_QUEUE_CONNECTION_FACTORY, parms); - trsIn.addParameter( queueConnectionFactory ); - - trsIn.setReceiver(jmsListener); - - configContext.getAxisConfiguration().addTransportIn( trsIn ); - TransportOutDescription trsOut = configContext.getAxisConfiguration().getTransportOut(Constants.TRANSPORT_JMS); - //configContext.getAxisConfiguration().addTransportOut( trsOut ); - trsOut.setSender(jmsSender); - - if (listenerManager == null) { - listenerManager = new ListenerManager(); - listenerManager.init(configContext); - } - listenerManager.addListener(trsIn, true); - jmsSender.init(configContext, trsOut); - jmsListener.init(configContext, trsIn); - jmsListener.start(); - } - } catch (AxisFault e) { - throw new RuntimeException(e); - } - } - - public void stop() { - if ( jmsListener != null ) { - jmsListener.stop(); - jmsListener.destroy(); - } - else { - servletHost.removeServletMapping(wsBinding.getURI()); - } - - if ( jmsSender != null ) - jmsSender.stop(); - - try { - configContext.getAxisConfiguration().removeService(wsBinding.getURI()); - } - catch (AxisFault e) { - throw new RuntimeException(e); - } - } - - /** - * Compute the endpoint URI based on section 2.1.1 of the WS binding spec 1. - * The URIs in the endpoint(s) of the referenced WSDL, which may be relative - * 2. The URI specified by the wsa:Address element of the - * wsa:EndpointReference, which may be relative 3. The explicitly stated URI - * in the "uri" attribute of the binding.ws element, which may be relative, - * 4. The implicit URI as defined by in section 1.7 in the SCA Assembly spec - * If the <binding.ws> has no wsdlElement but does have a uri attribute then - * the uri takes precidence over any implicitly used WSDL. - * - * @param baseURI - */ - protected URI computeActualURI(String baseURI, RuntimeComponent component, AbstractContract contract) { - - org.apache.axis2.addressing.EndpointReference epr = null; - URI eprURI = null; - if (wsBinding.getEndPointReference() != null) { - epr = getEPR(); - if (epr.getAddress() != null) { - eprURI = URI.create(epr.getAddress()); - } - } - - URI wsdlURI = null; - if (wsBinding.getServiceName() != null && wsBinding.getBindingName() == null) { - // <binding.ws> explicitly points at a wsdl port, may be a relative URI - wsdlURI = getEndpoint(wsBinding.getPort()); - } - - // if the wsdl port/endpoint has an absolute URI use that - if (wsdlURI != null && wsdlURI.isAbsolute()) { - if (wsBinding.getURI() != null) { -// TODO: throw new IllegalArgumentException("Cannot specify binding URI when wsdl has aboslute URI"); - } - return URI.create(wsdlURI.toString()); - } - - // if the wsa:EndpointReference has an address element with an absolute URI use that - if (eprURI != null && eprURI.isAbsolute()) { - //FIXME Throwing an exception breaks as wsBinding.getURI() will return the default URI - // derived from the service name or the URI actually configured in the .composite -// if (wsBinding.getURI() != null) { -// throw new IllegalArgumentException("Cannot specify binding URI when wsa:EndpointReference has aboslute address URI"); -// } - return URI.create(eprURI.toString()); - } - - // either there is no wsdl port endpoint URI or that URI is relative - - URI completeURI; - if (wsBinding.getURI() != null) { - completeURI = URI.create(wsBinding.getURI()); - if (!completeURI.isAbsolute()) { - completeURI = URI.create(baseURI + "/" + wsBinding.getURI()); - } - } else { - completeURI = URI.create(baseURI + "/" + wsBinding.getName()); - } - - if (eprURI != null) { - // there is a relative URI in the binding EPR - completeURI = URI.create(completeURI + "/" + eprURI); - } - - if (wsdlURI != null) { - // there is a relative URI in the wsdl port - completeURI = URI.create(completeURI + "/" + wsdlURI); - } - - return completeURI; - - } - - private org.apache.axis2.addressing.EndpointReference getEPR() { - try { - - XMLStreamReader parser = XMLInputFactory.newInstance().createXMLStreamReader(new DOMSource(wsBinding.getEndPointReference())); - StAXOMBuilder builder = new StAXOMBuilder(parser); - OMElement omElement = builder.getDocumentElement(); - org.apache.axis2.addressing.EndpointReference epr = EndpointReferenceHelper.fromOM(omElement); - return epr; - - } catch (IOException e) { - throw new RuntimeException(e); - } catch (XMLStreamException e) { - throw new RuntimeException(e); - } catch (FactoryConfigurationError e) { - throw new RuntimeException(e); - } - } - - /** - * Returns the endpoint of a given port. - */ - protected URI getEndpoint(Port wsdlPort) { - if (wsdlPort != null) { - List<?> wsdlPortExtensions = wsdlPort.getExtensibilityElements(); - for (Object extension : wsdlPortExtensions) { - if (extension instanceof SOAPAddress) { - return URI.create(((SOAPAddress)extension).getLocationURI()); - } - } - } - return null; - } - - private AxisService createAxisService() throws AxisFault { - AxisService axisService; - if (wsBinding.getWSDLDefinition() != null) { - axisService = createWSDLAxisService(); - } else { - axisService = createJavaAxisService(); - } - initAxisOperations(axisService); - return axisService; - } - - /** - * Create an AxisService from the interface class from the SCA service interface - */ - protected AxisService createJavaAxisService() throws AxisFault { - AxisService axisService = new AxisService(); - String path = URI.create(wsBinding.getURI()).getPath(); - axisService.setName(path); - axisService.setServiceDescription("Tuscany configured AxisService for service: " + wsBinding.getURI()); - axisService.setClientSide(false); - Parameter classParam = - new Parameter(Constants.SERVICE_CLASS, ((JavaInterface)contract.getInterfaceContract().getInterface()) - .getJavaClass().getName()); - axisService.addParameter(classParam); - try { - Utils.fillAxisService(axisService, configContext.getAxisConfiguration(), null, null); - } catch (Exception e) { - throw new RuntimeException(e); - } - - return axisService; - } - - /** - * Create an AxisService from the WSDL doc used by ws binding - */ - protected AxisService createWSDLAxisService() throws AxisFault { - Definition definition = wsBinding.getWSDLDefinition().getDefinition(); - - // WSDLToAxisServiceBuilder only uses the service and port to find the wsdl4J Binding - // An SCA service with binding.ws does not require a service or port so we may not have - // these but ... - - Axis2ServiceClient.setServiceAndPort(wsBinding); - QName serviceQName = wsBinding.getServiceName(); - String portName = wsBinding.getPortName(); - - WSDLToAxisServiceBuilder builder = new WSDL11ToAxisServiceBuilder(definition, serviceQName, portName); - builder.setServerSide(true); - // [rfeng] Add a custom resolver to work around WSCOMMONS-228 - builder.setCustomResolver(new URIResolverImpl(definition)); - builder.setBaseUri(definition.getDocumentBaseURI()); - // [rfeng] - AxisService axisService = builder.populateService(); - - String path = URI.create(wsBinding.getURI()).getPath(); - String name = ( path.startsWith( "/") ? path.substring(1) : path ); - axisService.setName(name); - String endpointURL = wsBinding.getURI(); - axisService.setEndpointURL(endpointURL ); - axisService.setDocumentation("Tuscany configured AxisService for service: " + wsBinding.getURI()); - for ( Iterator i = axisService.getEndpoints().values().iterator(); i.hasNext(); ) { - AxisEndpoint ae = (AxisEndpoint)i.next(); - if (endpointURL.startsWith("jms") ) { - Parameter qcf = new Parameter(JMSConstants.CONFAC_PARAM, null); - qcf.setValue(DEFAULT_QUEUE_CONNECTION_FACTORY); - axisService.addParameter(qcf); - break; - } - } - // Use the existing WSDL - Parameter wsdlParam = new Parameter(WSDLConstants.WSDL_4_J_DEFINITION, null); - wsdlParam.setValue(definition); - axisService.addParameter(wsdlParam); - Parameter userWSDL = new Parameter("useOriginalwsdl", "true"); - axisService.addParameter(userWSDL); - - return axisService; - } - - protected void initAxisOperations(AxisService axisService) { - for (Iterator<?> i = axisService.getOperations(); i.hasNext();) { - AxisOperation axisOp = (AxisOperation)i.next(); - Operation op = getOperation(axisOp); - if (op != null) { - - if (op.isNonBlocking()) { - axisOp.setMessageExchangePattern(WSDL2Constants.MEP_URI_IN_ONLY); - } else { - axisOp.setMessageExchangePattern(WSDL2Constants.MEP_URI_IN_OUT); - } - - MessageReceiver msgrec = null; - if (op.isNonBlocking()) { - msgrec = new Axis2ServiceInMessageReceiver(this, op); - } else { - msgrec = new Axis2ServiceInOutSyncMessageReceiver(this, op); - } - axisOp.setMessageReceiver(msgrec); - } - } - } - - protected Operation getOperation(AxisOperation axisOp) { - String operationName = axisOp.getName().getLocalPart(); - Interface iface = wsBinding.getBindingInterfaceContract().getInterface(); - for (Operation op : iface.getOperations()) { - if (op.getName().equalsIgnoreCase(operationName)) { - return op; - } - } - return null; - } - - // methods for Axis2 message receivers - - public Object invokeTarget(Operation op, Object[] args, MessageContext inMC) throws InvocationTargetException { - - String callbackAddress = null; - String callbackID = null; - Object conversationID = null; - - //FIXME: can we use the Axis2 addressing support for this? - SOAPHeader header = inMC.getEnvelope().getHeader(); - if (header != null) { - OMElement to = header.getFirstChildWithName(QNAME_WSA_TO); - if (to != null) { - OMElement params = to.getFirstChildWithName(QNAME_WSA_REFERENCE_PARAMETERS); - if (params != null) { - OMElement convIDElement = - params.getFirstChildWithName(Axis2BindingInvoker.CONVERSATION_ID_REFPARM_QN); - if (convIDElement != null) { - if (isConversational()) { - conversationID = convIDElement.getText(); - } - } - OMElement callbackAddrElement = - params.getFirstChildWithName(Axis2BindingInvoker.CALLBACK_REFERENCE_REFPARM_QN); - if (callbackAddrElement != null) { - if (contract.getInterfaceContract().getCallbackInterface() != null) { - callbackAddress = callbackAddrElement.getText(); - } - } - OMElement callbackIDElement = - params.getFirstChildWithName(Axis2BindingInvoker.CALLBACK_ID_REFPARM_QN); - if (callbackIDElement != null) { - if (contract.getInterfaceContract().getCallbackInterface() != null) { - callbackID = callbackIDElement.getText(); - } - } - } - } - } - - // create a message object and set the args as its body - Message msg = messageFactory.createMessage(); - msg.setBody(args); - msg.setOperation( op ); - - // if reference parameters are needed, create a new "To" EPR to hold them - EndpointReference to = null; - if (callbackAddress != null || - callbackID != null || - conversationID != null) { - to = new EndpointReferenceImpl(null); - msg.setTo(to); - } - - // set the reference parameters into the "To" EPR - if (callbackAddress != null) { - to.getReferenceParameters().setCallbackReference(new EndpointReferenceImpl(callbackAddress)); - } - if (callbackID != null) { - to.getReferenceParameters().setCallbackID(callbackID); - } - if (conversationID != null) { - to.getReferenceParameters().setConversationID(conversationID); - } - - // find the runtime wire and invoke it with the message - RuntimeWire wire = ((RuntimeComponentService)contract).getRuntimeWire(getBinding()); - return wire.invoke(op, msg); - } - - public boolean isConversational() { - return wsBinding.getBindingInterfaceContract().getInterface().isConversational(); - } - - /** - * Return the binding for this provider as a primitive binding type - * For use when looking up wires registered against the binding. - * - * @return the binding - */ - protected Binding getBinding() { - return wsBinding; - } - - private PolicySet getPolicySet(QName intentName){ - PolicySet returnPolicySet = null; - - if ( wsBinding instanceof PolicySetAttachPoint ) { - PolicySetAttachPoint policiedBinding = (PolicySetAttachPoint)wsBinding; - for ( PolicySet policySet : policiedBinding.getPolicySets() ) { - for (Intent intent : policySet.getProvidedIntents()){ - if ( intent.getName().equals(intentName) ){ - returnPolicySet = policySet; - break; - } - } - } - } - - return returnPolicySet; - } - - private void configureSecurity() throws AxisFault { - if ( wsBinding instanceof PolicySetAttachPoint ) { - PolicySetAttachPoint policiedBinding = (PolicySetAttachPoint)wsBinding; - Parameter configParam = null; - Axis2ConfigParamPolicy axis2ConfigParamPolicy = null; - for ( PolicySet policySet : policiedBinding.getPolicySets() ) { - for ( Object policy : policySet.getPolicies() ) { - if ( policy instanceof Axis2ConfigParamPolicy ) { - axis2ConfigParamPolicy = (Axis2ConfigParamPolicy)policy; - for ( String paramName : axis2ConfigParamPolicy.getParamElements().keySet() ) { - configParam = new Parameter(paramName, - axis2ConfigParamPolicy.getParamElements().get(paramName).getFirstElement()); - configParam.setParameterElement(axis2ConfigParamPolicy.getParamElements().get(paramName)); - configContext.getAxisConfiguration().addParameter(configParam); - } - } else if ( policy instanceof Policy ) { - Policy wsPolicy = (Policy)policy; - configContext.getAxisConfiguration().applyPolicy(wsPolicy); - } - } - } - } - } - - private void deployRampartModule() throws DeploymentException, AxisFault { - ClassLoader tccl = (ClassLoader) org.apache.axis2.java.security.AccessController - .doPrivileged(new PrivilegedAction() { - public Object run() { - return Thread.currentThread().getContextClassLoader(); - } - }); - - - AxisModule module = new AxisModule(); - module.setParent(configContext.getAxisConfiguration()); - String moduleName = "rampart-1.2"; - URL moduleurl = TuscanyAxisConfigurator.class.getResource("/org/apache/tuscany/sca/binding/ws/axis2/engine/config/rampart-1.2.mar"); - module.setName(moduleName); - ClassLoader deploymentClassloader = Utils.createClassLoader(new URL[]{moduleurl}, - tccl, - true, - (File)configContext.getAxisConfiguration().getParameterValue(Constants.Configuration.ARTIFACTS_TEMP_DIR)); - - module.setModuleClassLoader(deploymentClassloader); - populateModule(module, moduleurl,configContext.getAxisConfiguration()); - module.setFileName(moduleurl); - TuscanyAxisConfigurator.addNewModule(module, configContext.getAxisConfiguration()); - org.apache.axis2.util.Utils.calculateDefaultModuleVersion( - configContext.getAxisConfiguration().getModules(), configContext.getAxisConfiguration()); - } - - private void populateModule(AxisModule module, URL moduleUrl, AxisConfiguration axisConfig) throws DeploymentException { - try { - ClassLoader classLoadere = module.getModuleClassLoader(); - InputStream moduleStream = classLoadere.getResourceAsStream("META-INF/module.xml"); - if (moduleStream == null) { - moduleStream = classLoadere.getResourceAsStream("meta-inf/module.xml"); - } - if (moduleStream == null) { - throw new DeploymentException( - Messages.getMessage( - DeploymentErrorMsgs.MODULE_XML_MISSING, moduleUrl.toString())); - } - ModuleBuilder moduleBuilder = new ModuleBuilder(moduleStream, module, axisConfig); - moduleBuilder.populateModule(); - } catch (IOException e) { - throw new DeploymentException(e); - } - } -} |