/** * Endpoint has a unique name within all the endpoints in the module. * @return WebServiceEndpoint or null if not found */ public WebServiceEndpoint getEndpointByName(String endpointName) { for(Iterator iter = getEndpoints().iterator(); iter.hasNext();) { WebServiceEndpoint next = (WebServiceEndpoint) iter.next(); if( next.getEndpointName().equals(endpointName) ) { return next; } } return null; }
public void addEndpoint(WebServiceEndpoint endpoint) { endpoint.setWebService(this); endpoints.put(endpoint.getEndpointName(), endpoint); }
/** * Endpoint has a unique name within all the endpoints in the module. * @return WebServiceEndpoint or null if not found */ public WebServiceEndpoint getEndpointByName(String endpointName) { for(Iterator iter = getEndpoints().iterator(); iter.hasNext();) { WebServiceEndpoint next = (WebServiceEndpoint) iter.next(); if( next.getEndpointName().equals(endpointName) ) { return next; } } return null; }
public void removeEndpoint(WebServiceEndpoint endpoint) { removeEndpointByName(endpoint.getEndpointName()); }
public void removeEndpoint(WebServiceEndpoint endpoint) { removeEndpointByName(endpoint.getEndpointName()); }
public void addEndpoint(WebServiceEndpoint endpoint) { endpoint.setWebService(this); endpoints.put(endpoint.getEndpointName(), endpoint); }
/** * copy constructor. */ public WebService(WebService other) { super(other); wsdlFileUri = other.wsdlFileUri; // String wsdlFileUrl = other.wsdlFileUrl; mappingFileUri = other.mappingFileUri; // String mappingFile = other.mappingFile; publishUrl = other.publishUrl; webServicesDesc = other.webServicesDesc; // copy as-is type = other.type; if (other.endpoints != null) { endpoints = new HashMap<String, WebServiceEndpoint>(); for (WebServiceEndpoint wsep : other.endpoints.values()) { wsep.setWebService(this); endpoints.put(wsep.getEndpointName(), wsep); } } else { endpoints = null; } }
/** * copy constructor. */ public WebService(WebService other) { super(other); wsdlFileUri = other.wsdlFileUri; // String wsdlFileUrl = other.wsdlFileUrl; mappingFileUri = other.mappingFileUri; // String mappingFile = other.mappingFile; publishUrl = other.publishUrl; webServicesDesc = other.webServicesDesc; // copy as-is type = other.type; if (other.endpoints != null) { endpoints = new HashMap<String, WebServiceEndpoint>(); for (WebServiceEndpoint wsep : other.endpoints.values()) { wsep.setWebService(this); endpoints.put(wsep.getEndpointName(), wsep); } } else { endpoints = null; } }
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException { // normal WSDL retrieval invocation WsUtil wsUtil = new WsUtil(); try { wsUtil.handleGet(request, response, endpoint_); } catch(Exception e) { logger.log(Level.WARNING, "Servlet web service endpoint '" + endpoint_.getEndpointName() + "' HTTP GET error", e); } }
public void invoke(HttpServletRequest req, HttpServletResponse resp, ServletContext ctxt, EjbRuntimeEndpointInfo endpointInfo) { String method = req.getMethod(); if (logger.isLoggable(Level.FINE)) { logger.log(Level.FINE, "WebServiceDispatcher " + req.getMethod() + " entering for " + req.getRequestURI() + " and query string " + req.getQueryString()); } try { if( method.equals("POST") ) { handlePost(req, resp, endpointInfo); } else if( method.equals("GET") ) { handleGet(req, resp, ctxt, endpointInfo); } else { String errorMessage = "Unsupported method request = [" + method + "] for endpoint " + endpointInfo.getEndpoint().getEndpointName() + " at " + endpointInfo.getEndpointAddressUri(); logger.warning(errorMessage); wsUtil.writeInvalidMethodType(resp, errorMessage); } } catch(Exception e) { logger.log(Level.WARNING, "ejb endpoint exception", e); } }
/** * Adds a new DOL descriptor instance to the descriptor * instance associated with this XMLNode * * @param descriptor the new descriptor */ @Override public void addDescriptor(Object descriptor) { WebServicesDescriptor webServicesDesc = bundleDescriptor.getWebServices(); WebService webService = (WebService) descriptor; webServicesDesc.addWebService(webService); for(Iterator iter = webService.getEndpoints().iterator(); iter.hasNext();) { WebServiceEndpoint next = (WebServiceEndpoint) iter.next(); if( !next.resolveComponentLink() ) { logger.log(Level.INFO, LogUtils.WS_COMP_LINK_NOT_VALID, new Object[]{next.getEndpointName(), next.getLinkName()}); } } }
/** * Adds a new DOL descriptor instance to the descriptor * instance associated with this XMLNode * * @param descriptor the new descriptor */ public void addDescriptor(Object descriptor) { WebServicesDescriptor webServicesDesc = bundleDescriptor.getWebServices(); WebService webService = (WebService) descriptor; webServicesDesc.addWebService(webService); for(Iterator iter = webService.getEndpoints().iterator(); iter.hasNext();) { WebServiceEndpoint next = (WebServiceEndpoint) iter.next(); if( !next.resolveComponentLink() ) { DOLUtils.getDefaultLogger().info("Warning: Web service endpoint " + next.getEndpointName() + " component link " + next.getLinkName() + " is not valid"); } } }
public void validateEjbEndpoint(WebServiceEndpoint ejbEndpoint) { EjbDescriptor ejbDescriptor = ejbEndpoint.getEjbComponentImpl(); EjbBundleDescriptor bundle = ejbDescriptor.getEjbBundleDescriptor(); WebServicesDescriptor webServices = bundle.getWebServices(); Collection endpoints = webServices.getEndpointsImplementedBy(ejbDescriptor); if( endpoints.size() == 1 ) { if( ejbDescriptor.hasWebServiceEndpointInterface() ) { if(!ejbEndpoint.getServiceEndpointInterface().equals (ejbDescriptor.getWebServiceEndpointInterfaceName())) { String msg = "Ejb " + ejbDescriptor.getName() + " service endpoint interface does not match " + " port component " + ejbEndpoint.getEndpointName(); throw new IllegalStateException(msg); } } else { String msg = "Ejb " + ejbDescriptor.getName() + " must declare <service-endpoint> interface"; throw new IllegalStateException(msg); } } else if( endpoints.size() > 1 ) { String msg = "Ejb " + ejbDescriptor.getName() + " implements " + endpoints.size() + " web service endpoints " + " but must only implement 1"; throw new IllegalStateException(msg); } }
public String getEndpointAddressUri() { if (implementedByEjbComponent() && !hasEndpointAddressUri()) { setEndpointAddressUri("/" + getWebService().getName() + "/" + getEndpointName()); } return endpointAddressUri; }
public synchronized void undeploy(@ProbeParam("endpoint")WebServiceEndpoint endpoint) { // remove from [appName+moduleName+endpointName --> deployed data] com.sun.enterprise.deployment.Application app = endpoint.getBundleDescriptor().getApplication(); String appName = app.getAppName(); String moduleName = endpoint.getBundleDescriptor().getModuleName(); String endpointName = endpoint.getEndpointName(); Application application = applications.get(appName); if (application != null) { application.removeEndpoint(moduleName, endpointName); if (application.isEmpty()) { applications.remove(appName); } } }
/** * @param portComponenet the port component to which I refer */ public void setPortComponentLink(WebServiceEndpoint newPort) { if( newPort != null ) { // Keep port component link name in synch with port component // object. BundleDescriptor bundleDescriptor = getBundleDescriptor(); BundleDescriptor targetBundleDescriptor = newPort.getBundleDescriptor(); String linkName = newPort.getEndpointName(); if( bundleDescriptor != targetBundleDescriptor ) { Application app = bundleDescriptor.getApplication(); String relativeUri = app.getRelativeUri(bundleDescriptor, targetBundleDescriptor); linkName = relativeUri + "#" + linkName; } portComponentLinkName = linkName; } portComponentLink = newPort; }
/** * @param portComponenet the port component to which I refer */ public void setPortComponentLink(WebServiceEndpoint newPort) { if( newPort != null ) { // Keep port component link name in synch with port component // object. BundleDescriptor bundleDescriptor = getBundleDescriptor(); BundleDescriptor targetBundleDescriptor = newPort.getBundleDescriptor(); String linkName = newPort.getEndpointName(); if( bundleDescriptor != targetBundleDescriptor ) { Application app = bundleDescriptor.getApplication(); String relativeUri = app.getRelativeUri(bundleDescriptor, targetBundleDescriptor); linkName = relativeUri + "#" + linkName; } portComponentLinkName = linkName; } portComponentLink = newPort; }
public DeployedEndpointData(String path, Application app, WebServiceEndpoint endpoint) { super(path, "", ""); this.appName = app.getAppName(); this.endpointName = endpoint.getEndpointName(); this.namespace = endpoint.getServiceName().getNamespaceURI(); this.serviceName = endpoint.getServiceName().getLocalPart(); QName pName = endpoint.getWsdlPort(); this.portName = (pName != null) ? pName.getLocalPart() : ""; this.implClass = endpoint.implementedByEjbComponent() ? endpoint.getEjbComponentImpl().getEjbImplClassName() : endpoint.getServletImplClass(); this.address = path; this.wsdl = address+"?wsdl"; this.tester = address+"?Tester"; this.implType = endpoint.implementedByEjbComponent() ? "EJB" : "SERVLET"; this.deploymentType = "109"; fillStatMap(); }
public synchronized void deploy(@ProbeParam("endpoint")WebServiceEndpoint endpoint) { // add to [appName+moduleName+endpointName --> deployed data] com.sun.enterprise.deployment.Application app = endpoint.getBundleDescriptor().getApplication(); String appName = app.getAppName(); String moduleName = endpoint.getBundleDescriptor().getModuleName(); String endpointName = endpoint.getEndpointName(); // path (context path+url-pattern) --> deployed data //String id = new Endpoint(appName, moduleName, endpointName).toString(); String path = endpoint.getEndpointAddressPath(); DeployedEndpointData data = new DeployedEndpointData(path, app, endpoint); Application application = applications.get(appName); if (application == null) { application = new Application(appName); applications.put(appName, application); } application.addEndpoint(moduleName, endpointName, data); }
private void handleGet(HttpServletRequest req, HttpServletResponse resp, ServletContext ctxt, EjbRuntimeEndpointInfo endpointInfo) throws IOException { AdapterInvocationInfo adapterInfo = null; ServletAdapter adapter; try { adapterInfo = (AdapterInvocationInfo) endpointInfo.prepareInvocation(true); adapter = adapterInfo.getAdapter(); if (adapter != null) { adapter.publishWSDL(ctxt, req, resp); } else { String message = "Invalid wsdl request " + req.getRequestURL(); (new WsUtil()).writeInvalidMethodType(resp, message); } } catch (Throwable e) { String errorMessage = "invocation error on ejb endpoint " + endpointInfo.getEndpoint().getEndpointName() + " at " + endpointInfo.getEndpointAddressUri() + " : " + e.getMessage(); logger.log(Level.WARNING, errorMessage, e); String binding = endpointInfo.getEndpoint().getProtocolBinding(); WsUtil.raiseException(resp, binding, errorMessage); } } }