private void setupStickinessIfRequired(AbstractInvocationContext context, boolean propagate, AbstractTransaction transaction) { ConcurrentMap<Application, URI> applications = null; if (transaction instanceof RemoteTransaction) { final URI location = ((RemoteTransaction) transaction).getLocation(); // we can only route this request to one place; do not load-balance if (location != null) { context.setDestination(location); setupSessionAffinitiesIfNeeded(context); } } else if (transaction instanceof LocalTransaction && propagate){ applications = getOrCreateApplicationMap(transaction); URI destination = getApplicationAssociation(applications, context); if (destination != null) { context.setDestination(destination); setupSessionAffinitiesIfNeeded(context); } else { if (applications.size() > 0) { context.putAttachment(PREFERRED_DESTINATIONS, applications.values()); } context.putAttachment(APPLICATIONS, applications); } } }
private Application updateOrFollowApplication(AbstractInvocationContext context, ConcurrentMap<Application, URI> applications, boolean register) { URI destination = context.getDestination(); if (destination != null) { EJBIdentifier identifier = context.getLocator().getIdentifier(); Application application = toApplication(identifier); URI existing = applications.putIfAbsent(application, destination); if (existing != null) { // Someone else set a mapping, use it instead context.setDestination(existing); } else { if (register) { context.putAttachment(APPLICATION, application); } return application; } } else { Logs.TXN.trace("Failed assertion: a destination was supposed ot be present but wasn't"); } return null; }
private void setupStickinessIfRequired(AbstractInvocationContext context, boolean propagate, AbstractTransaction transaction) { ConcurrentMap<Application, URI> applications = null; if (transaction instanceof RemoteTransaction) { final URI location = ((RemoteTransaction) transaction).getLocation(); // we can only route this request to one place; do not load-balance if (location != null) { context.setDestination(location); setupSessionAffinitiesIfNeeded(context); } } else if (transaction instanceof LocalTransaction && propagate){ applications = getOrCreateApplicationMap(transaction); URI destination = getApplicationAssociation(applications, context); if (destination != null) { context.setDestination(destination); setupSessionAffinitiesIfNeeded(context); } else { if (applications.size() > 0) { context.putAttachment(PREFERRED_DESTINATIONS, applications.values()); } context.putAttachment(APPLICATIONS, applications); } } }
private void setupStickinessIfRequired(AbstractInvocationContext context, boolean propagate, AbstractTransaction transaction) { ConcurrentMap<Application, URI> applications = null; if (transaction instanceof RemoteTransaction) { final URI location = ((RemoteTransaction) transaction).getLocation(); // we can only route this request to one place; do not load-balance if (location != null) { context.setDestination(location); setupSessionAffinitiesIfNeeded(context); } } else if (transaction instanceof LocalTransaction && propagate){ applications = getOrCreateApplicationMap(transaction); URI destination = getApplicationAssociation(applications, context); if (destination != null) { context.setDestination(destination); setupSessionAffinitiesIfNeeded(context); } else { if (applications.size() > 0) { context.putAttachment(PREFERRED_DESTINATIONS, applications.values()); } context.putAttachment(APPLICATIONS, applications); } } }
private Application updateOrFollowApplication(AbstractInvocationContext context, ConcurrentMap<Application, URI> applications, boolean register) { URI destination = context.getDestination(); if (destination != null) { EJBIdentifier identifier = context.getLocator().getIdentifier(); Application application = toApplication(identifier); URI existing = applications.putIfAbsent(application, destination); if (existing != null) { // Someone else set a mapping, use it instead context.setDestination(existing); } else { if (register) { context.putAttachment(APPLICATION, application); } return application; } } else { Logs.TXN.trace("Failed assertion: a destination was supposed ot be present but wasn't"); } return null; }
private Application updateOrFollowApplication(AbstractInvocationContext context, ConcurrentMap<Application, URI> applications, boolean register) { URI destination = context.getDestination(); if (destination != null) { EJBIdentifier identifier = context.getLocator().getIdentifier(); Application application = toApplication(identifier); URI existing = applications.putIfAbsent(application, destination); if (existing != null) { // Someone else set a mapping, use it instead context.setDestination(existing); } else { if (register) { context.putAttachment(APPLICATION, application); } return application; } } else { Logs.TXN.trace("Failed assertion: a destination was supposed ot be present but wasn't"); } return null; }