@Override protected void postProcessContext(Context context) { ContextResource resource = new ContextResource(); resource.setName("jdbc/myDataSource"); resource.setType(DataSource.class.getName()); resource.setProperty("driverClassName", "your.db.Driver"); resource.setProperty("url", "jdbc:yourDb"); context.getNamingResources().addResource(resource); } };
@Override public void addContextResource(Context context, List<ApplicationResource> resourceList, boolean contextBound) { NamingResourcesImpl namingResources = context.getNamingResources(); for (ContextResource contextResource : namingResources.findResources()) { ApplicationResource resource = new ApplicationResource(); logger.info("reading resource: {}", contextResource.getName()); resource.setApplicationName(context.getName()); resource.setName(contextResource.getName()); resource.setType(contextResource.getType()); resource.setScope(contextResource.getScope()); resource.setAuth(contextResource.getAuth()); resource.setDescription(contextResource.getDescription()); resourceList.add(resource); } }
/** * Return a String representation of this object. */ @Override public String toString() { StringBuilder sb = new StringBuilder("ContextResource["); sb.append("name="); sb.append(getName()); if (getDescription() != null) { sb.append(", description="); sb.append(getDescription()); } if (getType() != null) { sb.append(", type="); sb.append(getType()); } if (auth != null) { sb.append(", auth="); sb.append(auth); } if (scope != null) { sb.append(", scope="); sb.append(scope); } sb.append("]"); return (sb.toString()); }
(resource.getType(), resource.getDescription(), resource.getScope(), resource.getAuth(), resource.getSingleton()); Iterator<String> params = resource.listProperties(); while (params.hasNext()) { String paramName = params.next(); String paramValue = (String) resource.getProperty(paramName); StringRefAddr refAddr = new StringRefAddr(paramName, paramValue); ref.add(refAddr); if (logger.isDebugEnabled()) { logger.debug(" Adding resource ref " + resource.getName() + " " + ref); createSubcontexts(envCtx, resource.getName()); envCtx.bind(resource.getName(), ref); } catch (NamingException e) { logger.error(sm.getString("naming.bindFailed", e)); resource.getSingleton()) { try { ObjectName on = createObjectName(resource); Object actualResource = envCtx.lookup(resource.getName()); Registry.getRegistry(null, null).registerComponent(actualResource, on, null); objectNames.put(resource.getName(), on); } catch (Exception e) { logger.warn(sm.getString("naming.jmxRegistrationFailed", e));
cr.setAuth((String)value); } else if ("description".equals(name)) { cr.setDescription((String)value); } else if ("name".equals(name)) { cr.setName((String)value); } else if ("scope".equals(name)) { cr.setScope((String)value); } else if ("type".equals(name)) { cr.setType((String)value); } else { cr.setProperty(name, "" + value); NamingResources nr = cr.getNamingResources(); nr.removeResource(cr.getName()); nr.addResource(cr);
sb.append(" <resource-ref>\n"); appendElement(sb, INDENT4, "description", resourceRef.getDescription()); appendElement(sb, INDENT4, "res-ref-name", resourceRef.getName()); appendElement(sb, INDENT4, "res-type", resourceRef.getType()); appendElement(sb, INDENT4, "res-auth", resourceRef.getAuth()); appendElement(sb, INDENT4, "res-sharing-scope", resourceRef.getScope()); appendElement(sb, INDENT4, "mapped-name", resourceRef.getProperty("mappedName")); for (InjectionTarget target : resourceRef.getInjectionTargets()) { sb.append(" <injection-target>\n"); appendElement(sb, INDENT6, "injection-target-class", sb.append(" </injection-target>\n"); appendElement(sb, INDENT4, "lookup-name", resourceRef.getLookupName()); sb.append(" </resource-ref>\n");
/** * Add a resource reference for this web application. * * @param resourceName New resource reference name * @param type New resource reference type * @return the object name of the new resource * @throws MalformedObjectNameException if the object name was invalid */ public String addResource(String resourceName, String type) throws MalformedObjectNameException { NamingResourcesImpl nresources = (NamingResourcesImpl) this.resource; if (nresources == null) { return null; } ContextResource resource = nresources.findResource(resourceName); if (resource != null) { throw new IllegalArgumentException( "Invalid resource name - already exists'" + resourceName + "'"); } resource = new ContextResource(); resource.setName(resourceName); resource.setType(type); nresources.addResource(resource); // Return the corresponding MBean name ManagedBean managed = registry.findManagedBean("ContextResource"); ObjectName oname = MBeanUtils.createObjectName(managed.getDomain(), resource); return oname.toString(); }
String quotedResourceName = ObjectName.quote(resource.getName()); if (container instanceof Server) { name = new ObjectName(domain + ":type=DataSource" + ",class=" + resource.getType() + ",name=" + quotedResourceName); } else if (container instanceof Context) { ",host=" + host.getName() + ",context=" + contextName + ",class=" + resource.getType() + ",name=" + quotedResourceName);
if (foundResources != null) { for (final ContextResource resource : foundResources) { if ("javax.sql.DataSource".equals(resource.getType()) && !ResourceFactory.class.getName().equals(resource.getProperty(Constants.FACTORY))) { String jndiName = (String) resource.getProperty("mappedName"); if (jndiName == null) { jndiName = resource.getName(); resource.setProperty("mappedName", "java:" + mostMatchingId); resource.setProperty(NamingUtil.RESOURCE_ID, "java:" + mostMatchingId); resource.setProperty(Constants.FACTORY, ResourceFactory.class.getName());
String quotedResourceName = ObjectName.quote(resource.getName()); Object container = resource.getNamingResources().getContainer(); if (container instanceof Server) { name = new ObjectName(domain + ":type=Resource" + ",resourcetype=Global,class=" + resource.getType() + ",name=" + quotedResourceName); } else if (container instanceof Context) { ",resourcetype=Context,host=" + host.getName() + ",context=" + cn.getDisplayName() + ",class=" + resource.getType() + ",name=" + quotedResourceName);
public void addResource(ContextResource resource) { if (entries.contains(resource.getName())) { return; } else { if (!checkResourceType(resource)) { throw new IllegalArgumentException(sm.getString( "namingResources.resourceTypeFail", resource.getName(), resource.getType())); entries.add(resource.getName()); resource.setNamingResources(this); resources.put(resource.getName(), resource); } catch (Exception e) { log.warn(sm.getString("namingResources.mbeanCreateFail", resource.getName()), e);
public void addResourceRef(ContextResource resourceRef) { if (resourceRefs.containsKey(resourceRef.getName())) { // resource-ref names must be unique within a web(-fragment).xml throw new IllegalArgumentException( sm.getString("webXml.duplicateResourceRef", resourceRef.getName())); } resourceRefs.put(resourceRef.getName(), resourceRef); } public Map<String,ContextResource> getResourceRefs() {
if (cr.getSingleton()) { String closeMethod = cr.getCloseMethod(); if (closeMethod != null && closeMethod.length() > 0) { String name = cr.getName(); Object resource; try { log.warn(sm.getString( "namingResources.cleanupNoResource", cr.getName(), container), e); continue;
private static Reference createReference(final ResourceBase resource) { final Reference ref; if (resource instanceof ContextResource) { final ContextResource cr = (ContextResource) resource; ref = new ResourceRef(resource.getType(), resource.getDescription(), cr.getScope(), cr.getAuth(), cr.getSingleton()); } else { ref = new ResourceEnvRef(resource.getType()); } final Iterator<String> params = resource.listProperties(); while (params.hasNext()) { final String paramName = params.next(); final String paramValue = (String) resource.getProperty(paramName); final StringRefAddr refAddr = new StringRefAddr(paramName, paramValue); ref.add(refAddr); } return ref; }
/** * Remove any resource reference with the specified name. * * @param name Name of the resource reference to remove */ @Override public void removeResource(String name) { entries.remove(name); ContextResource resource = null; synchronized (resources) { resource = resources.remove(name); } if (resource != null) { support.firePropertyChange("resource", resource, null); // De-register with JMX if (resourceRequireExplicitRegistration) { try { MBeanUtils.destroyMBean(resource); } catch (Exception e) { log.warn(sm.getString("namingResources.mbeanDestroyFail", resource.getName()), e); } } resource.setNamingResources(null); } }
public void setProperty(final String name, final Object value) { contextResource.setProperty(name, value); } }
ref = new ResourceRef(resource.getType(), resource.getDescription(), resource.getScope(), resource.getAuth(), resource.getSingleton()); Iterator<String> params = resource.listProperties(); while (params.hasNext()) { String paramName = params.next(); String paramValue = (String) resource.getProperty(paramName); StringRefAddr refAddr = new StringRefAddr(paramName, paramValue); ref.add(refAddr); log.debug(" Adding resource ref " + resource.getName() + " " + ref); createSubcontexts(envCtx, resource.getName()); envCtx.bind(resource.getName(), ref); } catch (NamingException e) { log.error(sm.getString("naming.bindFailed", e)); resource.getSingleton()) { try { ObjectName on = createObjectName(resource); Object actualResource = envCtx.lookup(resource.getName()); Registry.getRegistry(null, null).registerComponent(actualResource, on, null); objectNames.put(resource.getName(), on); } catch (Exception e) { log.warn(sm.getString("naming.jmxRegistrationFailed", e));
cr.setAuth((String)value); } else if ("description".equals(name)) { cr.setDescription((String)value); } else if ("name".equals(name)) { cr.setName((String)value); } else if ("scope".equals(name)) { cr.setScope((String)value); } else if ("type".equals(name)) { cr.setType((String)value); } else { cr.setProperty(name, "" + value); NamingResources nr = cr.getNamingResources(); nr.removeResource(cr.getName()); nr.addResource(cr);
sb.append(" <resource-ref>\n"); appendElement(sb, INDENT4, "description", resourceRef.getDescription()); appendElement(sb, INDENT4, "res-ref-name", resourceRef.getName()); appendElement(sb, INDENT4, "res-type", resourceRef.getType()); appendElement(sb, INDENT4, "res-auth", resourceRef.getAuth()); appendElement(sb, INDENT4, "res-sharing-scope", resourceRef.getScope()); appendElement(sb, INDENT4, "mapped-name", resourceRef.getProperty("mappedName")); for (InjectionTarget target : resourceRef.getInjectionTargets()) { sb.append(" <injection-target>\n"); appendElement(sb, INDENT6, "injection-target-class", sb.append(" </injection-target>\n"); appendElement(sb, INDENT4, "lookup-name", resourceRef.getLookupName()); sb.append(" </resource-ref>\n");
/** * Add a resource reference for this web application. * * @param resourceName New resource reference name * @param type New resource reference type */ public String addResource(String resourceName, String type) throws MalformedObjectNameException { NamingResourcesImpl nresources = (NamingResourcesImpl) this.resource; if (nresources == null) { return null; } ContextResource resource = nresources.findResource(resourceName); if (resource != null) { throw new IllegalArgumentException ("Invalid resource name - already exists'" + resourceName + "'"); } resource = new ContextResource(); resource.setName(resourceName); resource.setType(type); nresources.addResource(resource); // Return the corresponding MBean name ManagedBean managed = registry.findManagedBean("ContextResource"); ObjectName oname = MBeanUtils.createObjectName(managed.getDomain(), resource); return (oname.toString()); }