Author: markt
Date: Thu May 10 13:55:39 2018
New Revision: 1831342
URL: http://svn.apache.org/viewvc?rev=1831342&view=rev
Log:
Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=50019
Complete the fix
lookup-name support added to all support JNDI references
Modified:
tomcat/trunk/java/org/apache/catalina/core/NamingContextListener.java
tomcat/trunk/webapps/docs/changelog.xml
Modified: tomcat/trunk/java/org/apache/catalina/core/NamingContextListener.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/NamingContextListener.java?rev=1831342&r1=1831341&r2=1831342&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/NamingContextListener.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/core/NamingContextListener.java Thu
May 10 13:55:39 2018
@@ -849,123 +849,128 @@ public class NamingContextListener
*/
public void addService(ContextService service) {
- if (service.getWsdlfile() != null) {
- URL wsdlURL = null;
+ Reference ref = lookForLookupRef(service);
+
+ if (ref == null) {
+
+ if (service.getWsdlfile() != null) {
+ URL wsdlURL = null;
- try {
- wsdlURL = new URL(service.getWsdlfile());
- } catch (MalformedURLException e) {
- // Ignore and carry on
- }
- if (wsdlURL == null) {
try {
- wsdlURL = ((Context)
container).getServletContext().getResource(
- service.getWsdlfile());
+ wsdlURL = new URL(service.getWsdlfile());
} catch (MalformedURLException e) {
// Ignore and carry on
}
- }
- if (wsdlURL == null) {
- try {
- wsdlURL = ((Context)
container).getServletContext().getResource(
- "/" + service.getWsdlfile());
- log.debug(" Changing service ref wsdl file for /"
- + service.getWsdlfile());
- } catch (MalformedURLException e) {
- log.error(sm.getString("naming.wsdlFailed", e));
+ if (wsdlURL == null) {
+ try {
+ wsdlURL = ((Context)
container).getServletContext().getResource(
+ service.getWsdlfile());
+ } catch (MalformedURLException e) {
+ // Ignore and carry on
+ }
+ }
+ if (wsdlURL == null) {
+ try {
+ wsdlURL = ((Context)
container).getServletContext().getResource(
+ "/" + service.getWsdlfile());
+ log.debug(" Changing service ref wsdl file for /"
+ + service.getWsdlfile());
+ } catch (MalformedURLException e) {
+ log.error(sm.getString("naming.wsdlFailed", e));
+ }
}
+ if (wsdlURL == null)
+ service.setWsdlfile(null);
+ else
+ service.setWsdlfile(wsdlURL.toString());
}
- if (wsdlURL == null)
- service.setWsdlfile(null);
- else
- service.setWsdlfile(wsdlURL.toString());
- }
- if (service.getJaxrpcmappingfile() != null) {
- URL jaxrpcURL = null;
+ if (service.getJaxrpcmappingfile() != null) {
+ URL jaxrpcURL = null;
- try {
- jaxrpcURL = new URL(service.getJaxrpcmappingfile());
- } catch (MalformedURLException e) {
- // Ignore and carry on
- }
- if (jaxrpcURL == null) {
try {
- jaxrpcURL = ((Context)
container).getServletContext().getResource(
- service.getJaxrpcmappingfile());
+ jaxrpcURL = new URL(service.getJaxrpcmappingfile());
} catch (MalformedURLException e) {
// Ignore and carry on
}
- }
- if (jaxrpcURL == null) {
- try {
- jaxrpcURL = ((Context)
container).getServletContext().getResource(
- "/" + service.getJaxrpcmappingfile());
- log.debug(" Changing service ref jaxrpc file for /"
- + service.getJaxrpcmappingfile());
- } catch (MalformedURLException e) {
- log.error(sm.getString("naming.wsdlFailed", e));
+ if (jaxrpcURL == null) {
+ try {
+ jaxrpcURL = ((Context)
container).getServletContext().getResource(
+ service.getJaxrpcmappingfile());
+ } catch (MalformedURLException e) {
+ // Ignore and carry on
+ }
}
+ if (jaxrpcURL == null) {
+ try {
+ jaxrpcURL = ((Context)
container).getServletContext().getResource(
+ "/" + service.getJaxrpcmappingfile());
+ log.debug(" Changing service ref jaxrpc file for /"
+ + service.getJaxrpcmappingfile());
+ } catch (MalformedURLException e) {
+ log.error(sm.getString("naming.wsdlFailed", e));
+ }
+ }
+ if (jaxrpcURL == null)
+ service.setJaxrpcmappingfile(null);
+ else
+ service.setJaxrpcmappingfile(jaxrpcURL.toString());
+ }
+
+ // Create a reference to the resource.
+ ref = new ServiceRef(service.getName(), service.getInterface(),
+ service.getServiceqname(), service.getWsdlfile(),
+ service.getJaxrpcmappingfile());
+
+ // Adding the additional port-component-ref, if any
+ Iterator<String> portcomponent = service.getServiceendpoints();
+ while (portcomponent.hasNext()) {
+ String serviceendpoint = portcomponent.next();
+ StringRefAddr refAddr = new
StringRefAddr(ServiceRef.SERVICEENDPOINTINTERFACE, serviceendpoint);
+ ref.add(refAddr);
+ String portlink = service.getPortlink(serviceendpoint);
+ refAddr = new StringRefAddr(ServiceRef.PORTCOMPONENTLINK,
portlink);
+ ref.add(refAddr);
+ }
+ // Adding the additional parameters, if any
+ Iterator<String> handlers = service.getHandlers();
+ while (handlers.hasNext()) {
+ String handlername = handlers.next();
+ ContextHandler handler = service.getHandler(handlername);
+ HandlerRef handlerRef = new HandlerRef(handlername,
handler.getHandlerclass());
+ Iterator<String> localParts = handler.getLocalparts();
+ while (localParts.hasNext()) {
+ String localPart = localParts.next();
+ String namespaceURI = handler.getNamespaceuri(localPart);
+ handlerRef.add(new
StringRefAddr(HandlerRef.HANDLER_LOCALPART, localPart));
+ handlerRef.add(new
StringRefAddr(HandlerRef.HANDLER_NAMESPACE, namespaceURI));
+ }
+ Iterator<String> params = handler.listProperties();
+ while (params.hasNext()) {
+ String paramName = params.next();
+ String paramValue = (String)
handler.getProperty(paramName);
+ handlerRef.add(new
StringRefAddr(HandlerRef.HANDLER_PARAMNAME, paramName));
+ handlerRef.add(new
StringRefAddr(HandlerRef.HANDLER_PARAMVALUE, paramValue));
+ }
+ for (int i = 0; i < handler.getSoapRolesSize(); i++) {
+ handlerRef.add(new
StringRefAddr(HandlerRef.HANDLER_SOAPROLE, handler.getSoapRole(i)));
+ }
+ for (int i = 0; i < handler.getPortNamesSize(); i++) {
+ handlerRef.add(new
StringRefAddr(HandlerRef.HANDLER_PORTNAME, handler.getPortName(i)));
+ }
+ ((ServiceRef) ref).addHandler(handlerRef);
}
- if (jaxrpcURL == null)
- service.setJaxrpcmappingfile(null);
- else
- service.setJaxrpcmappingfile(jaxrpcURL.toString());
- }
-
- // Create a reference to the resource.
- Reference ref = new ServiceRef(service.getName(),
service.getInterface(),
- service.getServiceqname(), service.getWsdlfile(),
service.getJaxrpcmappingfile());
- // Adding the additional port-component-ref, if any
- Iterator<String> portcomponent = service.getServiceendpoints();
- while (portcomponent.hasNext()) {
- String serviceendpoint = portcomponent.next();
- StringRefAddr refAddr = new
StringRefAddr(ServiceRef.SERVICEENDPOINTINTERFACE, serviceendpoint);
- ref.add(refAddr);
- String portlink = service.getPortlink(serviceendpoint);
- refAddr = new StringRefAddr(ServiceRef.PORTCOMPONENTLINK,
portlink);
- ref.add(refAddr);
- }
- // Adding the additional parameters, if any
- Iterator<String> handlers = service.getHandlers();
- while (handlers.hasNext()) {
- String handlername = handlers.next();
- ContextHandler handler = service.getHandler(handlername);
- HandlerRef handlerRef = new HandlerRef(handlername,
handler.getHandlerclass());
- Iterator<String> localParts = handler.getLocalparts();
- while (localParts.hasNext()) {
- String localPart = localParts.next();
- String namespaceURI = handler.getNamespaceuri(localPart);
- handlerRef.add(new StringRefAddr(HandlerRef.HANDLER_LOCALPART,
localPart));
- handlerRef.add(new StringRefAddr(HandlerRef.HANDLER_NAMESPACE,
namespaceURI));
- }
- Iterator<String> params = handler.listProperties();
- while (params.hasNext()) {
- String paramName = params.next();
- String paramValue = (String) handler.getProperty(paramName);
- handlerRef.add(new StringRefAddr(HandlerRef.HANDLER_PARAMNAME,
paramName));
- handlerRef.add(new
StringRefAddr(HandlerRef.HANDLER_PARAMVALUE, paramValue));
- }
- for (int i = 0; i < handler.getSoapRolesSize(); i++) {
- handlerRef.add(new StringRefAddr(HandlerRef.HANDLER_SOAPROLE,
handler.getSoapRole(i)));
- }
- for (int i = 0; i < handler.getPortNamesSize(); i++) {
- handlerRef.add(new StringRefAddr(HandlerRef.HANDLER_PORTNAME,
handler.getPortName(i)));
- }
- ((ServiceRef) ref).addHandler(handlerRef);
}
try {
if (log.isDebugEnabled()) {
- log.debug(" Adding service ref "
- + service.getName() + " " + ref);
+ log.debug(" Adding service ref " + service.getName() + " " +
ref);
}
createSubcontexts(envCtx, service.getName());
envCtx.bind(service.getName(), ref);
} catch (NamingException e) {
log.error(sm.getString("naming.bindFailed", e));
}
-
}
Modified: tomcat/trunk/webapps/docs/changelog.xml
URL:
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1831342&r1=1831341&r2=1831342&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Thu May 10 13:55:39 2018
@@ -78,10 +78,8 @@
<code>java:</code> namespace. (markt)
</fix>
<fix>
- Partial fix for <bug>50019</bug>: Add support for
- <code><lookup-name></code> with environment entries, EJB
- references, resource references and resource environment references.
- (markt)
+ <bug>50019</bug>: Add support for <code><lookup-name></code>.
+ Based on a patch by Gurkan Erdogdu. (markt)
</fix>
</changelog>
</subsection>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]