/** * Returns context root associated with webservice deployment. * * <p>If there's application.xml descriptor provided defining nested web module, then context root * defined there will be returned. Otherwise context root defined in jboss-web.xml will be * returned. * * @param dep webservice deployment * @param jbossWebMD jboss web meta data * @return context root */ public static String getContextRoot(final Deployment dep, final JBossWebMetaData jbossWebMD) { final DeploymentUnit unit = WSHelper.getRequiredAttachment(dep, DeploymentUnit.class); final JBossAppMetaData jbossAppMD = unit.getParent() == null ? null : ASHelper.getOptionalAttachment( unit.getParent(), WSAttachmentKeys.JBOSS_APP_METADATA_KEY); String contextRoot = null; // prefer context root defined in application.xml over one defined in jboss-web.xml if (jbossAppMD != null) { final ModuleMetaData moduleMD = jbossAppMD.getModules().get(dep.getSimpleName()); if (moduleMD != null) { final WebModuleMetaData webModuleMD = (WebModuleMetaData) moduleMD.getValue(); contextRoot = webModuleMD.getContextRoot(); } } if (contextRoot == null) { contextRoot = jbossWebMD != null ? jbossWebMD.getContextRoot() : null; } return contextRoot; }
@Override public void start(final Deployment dep) { if (WSHelper.isJaxrpcDeployment(dep)) return; for (final Endpoint ep : dep.getService().getEndpoints()) { setInjectionAwareInstanceProvider(ep); } }
/** * Creates new Http Web Service endpoint. * * @param endpointClass endpoint class name * @param endpointName endpoint name * @param dep deployment * @return WS endpoint */ protected final Endpoint newHttpEndpoint( final String endpointClass, final String endpointName, final Deployment dep) { if (endpointName == null) throw MESSAGES.nullEndpointName(); if (endpointClass == null) throw MESSAGES.nullEndpointClass(); final Endpoint endpoint = this.deploymentModelFactory.newHttpEndpoint(endpointClass); endpoint.setShortName(endpointName); endpoint.setType(endpointType); dep.getService().addEndpoint(endpoint); return endpoint; }
/** Publishes the endpoints declared to the provided WSEndpointDeploymentUnit */ public List<Endpoint> publish(ServiceTarget target, WSEndpointDeploymentUnit unit) throws Exception { List<DeploymentAspect> aspects = DeploymentAspectsProvider.getSortedDeploymentAspects(); ClassLoader origClassLoader = SecurityActions.getContextClassLoader(); Deployment dep = null; try { SecurityActions.setContextClassLoader( ClassLoaderProvider.getDefaultProvider().getServerIntegrationClassLoader()); WSDeploymentBuilder.getInstance().build(unit); dep = unit.getAttachment(WSAttachmentKeys.DEPLOYMENT_KEY); dep.addAttachment(ServiceTarget.class, target); DeploymentAspectManager dam = new DeploymentAspectManagerImpl(); dam.setDeploymentAspects(aspects); dam.deploy(dep); } finally { if (dep != null) { dep.removeAttachment(ServiceTarget.class); } SecurityActions.setContextClassLoader(origClassLoader); } Deployment deployment = unit.getAttachment(WSAttachmentKeys.DEPLOYMENT_KEY); deployment.addAttachment( StandardContext.class, startWebApp(host, unit)); // TODO simplify and use findChild later in destroy()/stopWebApp() return deployment.getService().getEndpoints(); }
@Override public void destroy(Context context) throws Exception { List<Endpoint> eps = context.getEndpoints(); if (eps == null || eps.isEmpty()) { return; } Deployment deployment = eps.get(0).getService().getDeployment(); List<DeploymentAspect> aspects = DeploymentAspectsProvider.getSortedDeploymentAspects(); try { stopWebApp(deployment.getAttachment(StandardContext.class)); } finally { ClassLoader origClassLoader = SecurityActions.getContextClassLoader(); try { SecurityActions.setContextClassLoader( ClassLoaderProvider.getDefaultProvider().getServerIntegrationClassLoader()); DeploymentAspectManager dam = new DeploymentAspectManagerImpl(); dam.setDeploymentAspects(aspects); dam.undeploy(deployment); } finally { SecurityActions.setContextClassLoader(origClassLoader); } } }
private boolean hasWebservicesMD(final Endpoint endpoint) { final Deployment dep = endpoint.getService().getDeployment(); return dep.getAttachment(WebservicesMetaData.class) != null; }