You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ga...@apache.org on 2007/10/05 05:49:47 UTC
svn commit: r582070 - in /geronimo/server/trunk/modules:
geronimo-axis2-builder/src/main/java/org/apache/geronimo/axis2/builder/
geronimo-axis2-ejb/src/main/java/org/apache/geronimo/axis2/ejb/
geronimo-axis2/src/main/java/org/apache/geronimo/axis2/ ger...
Author: gawor
Date: Thu Oct 4 20:49:46 2007
New Revision: 582070
URL: http://svn.apache.org/viewvc?rev=582070&view=rev
Log:
got ridd of initContextRoot() method that wasn't thread safe (GERONIMO-3495)
Modified:
geronimo/server/trunk/modules/geronimo-axis2-builder/src/main/java/org/apache/geronimo/axis2/builder/Axis2Builder.java
geronimo/server/trunk/modules/geronimo-axis2-ejb/src/main/java/org/apache/geronimo/axis2/ejb/EJBWebServiceContainer.java
geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/Axis2WebServiceContainer.java
geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/pojo/POJOWebServiceContainer.java
geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/pojo/POJOWebServiceContainerFactoryGBean.java
geronimo/server/trunk/modules/geronimo-axis2/src/test/java/org/apache/geronimo/axis2/Axis2WebServiceContainerTest.java
geronimo/server/trunk/modules/geronimo-cxf/src/main/java/org/apache/geronimo/cxf/pojo/POJOWebServiceContainerFactoryGBean.java
geronimo/server/trunk/modules/geronimo-jaxws-builder/src/main/java/org/apache/geronimo/jaxws/builder/JAXWSServiceBuilder.java
Modified: geronimo/server/trunk/modules/geronimo-axis2-builder/src/main/java/org/apache/geronimo/axis2/builder/Axis2Builder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-axis2-builder/src/main/java/org/apache/geronimo/axis2/builder/Axis2Builder.java?rev=582070&r1=582069&r2=582070&view=diff
==============================================================================
--- geronimo/server/trunk/modules/geronimo-axis2-builder/src/main/java/org/apache/geronimo/axis2/builder/Axis2Builder.java (original)
+++ geronimo/server/trunk/modules/geronimo-axis2-builder/src/main/java/org/apache/geronimo/axis2/builder/Axis2Builder.java Thu Oct 4 20:49:46 2007
@@ -32,12 +32,10 @@
import org.apache.commons.logging.LogFactory;
import org.apache.geronimo.axis2.pojo.POJOWebServiceContainerFactoryGBean;
import org.apache.geronimo.common.DeploymentException;
-import org.apache.geronimo.deployment.DeploymentContext;
import org.apache.geronimo.gbean.GBeanData;
import org.apache.geronimo.gbean.GBeanInfo;
import org.apache.geronimo.gbean.GBeanInfoBuilder;
import org.apache.geronimo.j2ee.deployment.Module;
-import org.apache.geronimo.j2ee.deployment.WebModule;
import org.apache.geronimo.j2ee.deployment.WebServiceBuilder;
import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
import org.apache.geronimo.jaxws.JAXWSUtils;
@@ -181,32 +179,6 @@
}
}
- public boolean configurePOJO(GBeanData targetGBean,
- String servletName,
- Module module,
- String seiClassName,
- DeploymentContext context)
- throws DeploymentException {
-
- boolean status = super.configurePOJO(targetGBean, servletName, module, seiClassName, context);
- if(!status) {
- return false;
- }
-
- //change the URL
- Map sharedContext = ((WebModule) module).getSharedContext();
- String contextRoot = ((WebModule) module).getContextRoot();
- Map portInfoMap = (Map) sharedContext.get(getKey());
- PortInfo portInfo;
-
- if(portInfoMap != null && portInfoMap.get(servletName) != null){
- portInfo = (PortInfo) portInfoMap.get(servletName);
- processURLPattern(contextRoot, portInfo);
- }
-
- return status;
- }
-
private static String getString(String in) {
if (in != null) {
in = in.trim();
@@ -216,34 +188,7 @@
}
return in;
}
-
- private void processURLPattern(String contextRoot, PortInfo portInfo) throws DeploymentException {
- //if the user specifies a url-pattern, set it here.
- String oldup = portInfo.getLocation();
- if (oldup == null || oldup.length() == 0) {
- //if we cannot grab a valid urlpattern, default it to the port-component-name.
- oldup = portInfo.getPortName();
- } else {
- int i = oldup.indexOf(contextRoot);
- oldup = oldup.substring(i + contextRoot.length() + 1);
- oldup = oldup.trim();
- if (oldup.indexOf("*") > 0) {
- //uncomment this before we fix this issue. workarond by assuming * is at the end.
- //throw new DeploymentException("Per JSR 109, the url-pattern should not contain an asterisk.");
- oldup = oldup.substring(0, oldup.length() - 1);
- }
- //trim the forward slashes at the beginning or end.
- if (oldup.substring(0, 1).equalsIgnoreCase("/")) {
- oldup = oldup.substring(1);
- }
- if (oldup.substring(oldup.length()-1).equalsIgnoreCase("/")) {
- oldup = oldup.substring(0, oldup.length() - 1);
- }
-
- }
- portInfo.setLocation(oldup);
- }
-
+
@Override
protected void initialize(GBeanData targetGBean, Class serviceClass, PortInfo portInfo, Module module)
throws DeploymentException {
Modified: geronimo/server/trunk/modules/geronimo-axis2-ejb/src/main/java/org/apache/geronimo/axis2/ejb/EJBWebServiceContainer.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-axis2-ejb/src/main/java/org/apache/geronimo/axis2/ejb/EJBWebServiceContainer.java?rev=582070&r1=582069&r2=582070&view=diff
==============================================================================
--- geronimo/server/trunk/modules/geronimo-axis2-ejb/src/main/java/org/apache/geronimo/axis2/ejb/EJBWebServiceContainer.java (original)
+++ geronimo/server/trunk/modules/geronimo-axis2-ejb/src/main/java/org/apache/geronimo/axis2/ejb/EJBWebServiceContainer.java Thu Oct 4 20:49:46 2007
@@ -38,7 +38,6 @@
*/
public class EJBWebServiceContainer extends Axis2WebServiceContainer {
- private String contextRoot = null;
private DeploymentInfo deploymnetInfo;
public EJBWebServiceContainer(PortInfo portInfo,
@@ -55,6 +54,23 @@
public void init() throws Exception {
super.init();
+ String rootContext = null;
+ String servicePath = null;
+ String location = trimContext(this.portInfo.getLocation());
+ int pos = location.indexOf('/');
+ if (pos > 0) {
+ rootContext = location.substring(0, pos);
+ servicePath = location.substring(pos + 1);
+ } else {
+ rootContext = "/";
+ servicePath = location;
+ }
+
+ this.configurationContext.setServicePath(servicePath);
+ //need to setContextRoot after servicePath as cachedServicePath is only built
+ //when setContextRoot is called.
+ this.configurationContext.setContextRoot(rootContext);
+
// configure handlers
try {
configureHandlers();
@@ -71,40 +87,7 @@
serviceGenerator.setMessageReceiver(messageReceiver);
return serviceGenerator;
}
-
- @Override
- protected void initContextRoot(Request request) {
- String servicePath = portInfo.getLocation();
- if (contextRoot == null || "".equals(contextRoot)) {
- String[] parts = JavaUtils.split(request.getContextPath(), '/');
- if (parts != null) {
- for (int i = 0; i < parts.length; i++) {
- if (parts[i].length() > 0) {
- contextRoot = parts[i];
- break;
- }
- }
- }
- if (contextRoot == null || request.getContextPath().equals("/")) {
- contextRoot = "/";
- } else { //when contextRoot is not "/"
- //set the servicePath here for EJB.
- //check if portInfo.getLocation() contains contextRoot, if so, strip it.
- int i = servicePath.indexOf(contextRoot);
- if (i > -1) {
- servicePath = servicePath.substring(i + contextRoot.length() + 1);
- servicePath.trim();
- }
- }
- configurationContext.setServicePath(servicePath);
-
- //need to setContextRoot after servicePath as cachedServicePath is only built
- //when setContextRoot is called.
- configurationContext.setContextRoot(contextRoot);
- }
- }
-
public synchronized void injectHandlers() {
if (this.annotationProcessor != null) {
// assume injection was already done
Modified: geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/Axis2WebServiceContainer.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/Axis2WebServiceContainer.java?rev=582070&r1=582069&r2=582070&view=diff
==============================================================================
--- geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/Axis2WebServiceContainer.java (original)
+++ geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/Axis2WebServiceContainer.java Thu Oct 4 20:49:46 2007
@@ -172,7 +172,6 @@
protected void doService(final Request request, final Response response)
throws Exception {
- initContextRoot(request);
if (LOG.isDebugEnabled()) {
LOG.debug("Target URI: " + request.getURI());
@@ -236,8 +235,26 @@
}
- protected abstract void initContextRoot(Request request);
-
+ protected String getServicePath(String contextRoot) {
+ String location = this.portInfo.getLocation();
+ if (location != null && location.startsWith(contextRoot)) {
+ return location.substring(contextRoot.length());
+ }
+ return null;
+ }
+
+ public static String trimContext(String contextPath) {
+ if (contextPath != null) {
+ if (contextPath.startsWith("/")) {
+ contextPath = contextPath.substring(1);
+ }
+ if (contextPath.endsWith("/")) {
+ contextPath = contextPath.substring(0, contextPath.length() - 1);
+ }
+ }
+ return contextPath;
+ }
+
public void doService2(Request request,
Response response,
MessageContext msgContext) throws Exception {
Modified: geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/pojo/POJOWebServiceContainer.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/pojo/POJOWebServiceContainer.java?rev=582070&r1=582069&r2=582070&view=diff
==============================================================================
--- geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/pojo/POJOWebServiceContainer.java (original)
+++ geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/pojo/POJOWebServiceContainer.java Thu Oct 4 20:49:46 2007
@@ -30,7 +30,6 @@
import org.apache.axis2.jaxws.server.endpoint.lifecycle.factory.EndpointLifecycleManagerFactory;
import org.apache.axis2.transport.http.HTTPConstants;
import org.apache.axis2.transport.http.HTTPTransportUtils;
-import org.apache.axis2.util.JavaUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.geronimo.axis2.Axis2WebServiceContainer;
@@ -46,7 +45,7 @@
private static final Log LOG = LogFactory.getLog(POJOWebServiceContainer.class);
private Object endpointInstance;
- private String contextRoot = null;
+ private String contextRoot;
private AnnotationHolder holder;
public POJOWebServiceContainer(PortInfo portInfo,
@@ -54,9 +53,11 @@
ClassLoader classLoader,
Context context,
URL configurationBaseUrl,
- AnnotationHolder holder) {
+ AnnotationHolder holder,
+ String contextRoot) {
super(portInfo, endpointClassName, classLoader, context, configurationBaseUrl);
this.holder = holder;
+ this.contextRoot = contextRoot;
}
@Override
@@ -69,8 +70,13 @@
*/
FactoryRegistry.setFactory(EndpointLifecycleManagerFactory.class,
new POJOEndpointLifecycleManagerFactory());
-
- this.configurationContext.setServicePath(this.portInfo.getLocation());
+
+ String servicePath = trimContext(getServicePath(this.contextRoot));
+ this.configurationContext.setServicePath(servicePath);
+ //need to setContextRoot after servicePath as cachedServicePath is only built
+ //when setContextRoot is called.
+ String rootContext = trimContext(this.contextRoot);
+ this.configurationContext.setContextRoot(rootContext);
// instantiate and inject resources into service
try {
@@ -123,27 +129,7 @@
POJOWebServiceContext.clear();
}
}
-
- protected void initContextRoot(Request request) {
- if (contextRoot == null || "".equals(contextRoot)) {
- String[] parts = JavaUtils.split(request.getContextPath(), '/');
- if (parts != null) {
- for (int i = 0; i < parts.length; i++) {
- if (parts[i].length() > 0) {
- contextRoot = parts[i];
- break;
- }
- }
- }
- if (contextRoot == null || request.getContextPath().equals("/")) {
- contextRoot = "/";
- }
- //need to setContextRoot after servicePath as cachedServicePath is only built
- //when setContextRoot is called.
- configurationContext.setContextRoot(contextRoot);
- }
- }
-
+
@Override
public void destroy() {
// call handler preDestroy
Modified: geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/pojo/POJOWebServiceContainerFactoryGBean.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/pojo/POJOWebServiceContainerFactoryGBean.java?rev=582070&r1=582069&r2=582070&view=diff
==============================================================================
--- geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/pojo/POJOWebServiceContainerFactoryGBean.java (original)
+++ geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/pojo/POJOWebServiceContainerFactoryGBean.java Thu Oct 4 20:49:46 2007
@@ -50,6 +50,7 @@
private URL configurationBaseUrl;
private Context context;
private AnnotationHolder holder;
+ private String contextRoot;
public POJOWebServiceContainerFactoryGBean(org.apache.geronimo.jaxws.PortInfo portInfo,
String endpointClassName,
@@ -58,7 +59,8 @@
Kernel kernel,
TransactionManager transactionManager,
URL configurationBaseUrl,
- AnnotationHolder holder)
+ AnnotationHolder holder,
+ String contextRoot)
throws InstantiationException, IllegalAccessException, ClassNotFoundException {
if (componentContext != null) {
@@ -76,16 +78,18 @@
LOG.warn("Failed to create naming context", e);
}
}
-
+
this.portInfo = portInfo;
this.classLoader = classLoader;
this.endpointClassName = endpointClassName;
this.configurationBaseUrl = configurationBaseUrl;
this.holder = holder;
+ this.contextRoot = contextRoot;
}
public WebServiceContainer getWebServiceContainer() {
- POJOWebServiceContainer container = new POJOWebServiceContainer(portInfo, endpointClassName, classLoader, context, configurationBaseUrl, holder);
+ POJOWebServiceContainer container = new POJOWebServiceContainer(portInfo, endpointClassName, classLoader,
+ context, configurationBaseUrl, holder, contextRoot);
try {
container.init();
} catch (Exception e) {
@@ -112,9 +116,20 @@
infoBuilder.addReference("TransactionManager", TransactionManager.class, NameFactory.TRANSACTION_MANAGER);
infoBuilder.addAttribute("configurationBaseUrl", URL.class, true);
infoBuilder.addAttribute("holder", AnnotationHolder.class, true);
+ infoBuilder.addAttribute("contextRoot", String.class, true, true);
- infoBuilder.setConstructor(new String[]{"portInfo", "endpointClassName", "classLoader",
- "componentContext", "kernel", "TransactionManager", "configurationBaseUrl", "holder"});
+ infoBuilder.setConstructor(new String[]{
+ "portInfo",
+ "endpointClassName",
+ "classLoader",
+ "componentContext",
+ "kernel",
+ "TransactionManager",
+ "configurationBaseUrl",
+ "holder",
+ "contextRoot"
+ });
+
GBEAN_INFO = infoBuilder.getBeanInfo();
}
Modified: geronimo/server/trunk/modules/geronimo-axis2/src/test/java/org/apache/geronimo/axis2/Axis2WebServiceContainerTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-axis2/src/test/java/org/apache/geronimo/axis2/Axis2WebServiceContainerTest.java?rev=582070&r1=582069&r2=582070&view=diff
==============================================================================
--- geronimo/server/trunk/modules/geronimo-axis2/src/test/java/org/apache/geronimo/axis2/Axis2WebServiceContainerTest.java (original)
+++ geronimo/server/trunk/modules/geronimo-axis2/src/test/java/org/apache/geronimo/axis2/Axis2WebServiceContainerTest.java Thu Oct 4 20:49:46 2007
@@ -58,7 +58,7 @@
ClassLoader cl = Thread.currentThread().getContextClassLoader();
PortInfo portInfo = new PortInfo();
- portInfo.setLocation("HelloWorld");
+ portInfo.setLocation("/axis2/HelloWorld");
portInfo.setServiceEndpointInterfaceName("org.apache.geronimo.axis2.testdata.simple.HelloWorld");
Axis2Request req = new Axis2Request(504,
@@ -73,7 +73,7 @@
Axis2Response res = new Axis2Response("text/xml; charset=utf-8", "127.0.0.1", null, null, 8080, out);
String endpointClassName = "org.apache.geronimo.axis2.testdata.simple.HelloWorld";
- POJOWebServiceContainer container = new POJOWebServiceContainer(portInfo, endpointClassName, cl, null, null, AnnotationHolder.EMPTY);
+ POJOWebServiceContainer container = new POJOWebServiceContainer(portInfo, endpointClassName, cl, null, null, AnnotationHolder.EMPTY, "/axis2");
container.init();
container.invoke(req, res);
out.flush();
@@ -129,7 +129,7 @@
request = new ByteArrayInputStream(envelope.toString().getBytes("UTF-8"));
PortInfo portInfo = new PortInfo();
- portInfo.setLocation(serviceName);
+ portInfo.setLocation("/axis2/" + serviceName);
File wsdlFile = new File(RESOURCE_PATH + wsdl);
portInfo.setWsdlFile(wsdlFile.toURL().toString());
@@ -147,7 +147,7 @@
ByteArrayOutputStream out = new ByteArrayOutputStream();
Axis2Response res = new Axis2Response("text/xml; charset=utf-8", "127.0.0.1", null, null, 8080, out);
- POJOWebServiceContainer container = new POJOWebServiceContainer(portInfo, endPointClassName, cl, null, null, AnnotationHolder.EMPTY);
+ POJOWebServiceContainer container = new POJOWebServiceContainer(portInfo, endPointClassName, cl, null, null, AnnotationHolder.EMPTY, "/axis2");
container.init();
container.invoke(req, res);
System.out.println("Response "+out);
Modified: geronimo/server/trunk/modules/geronimo-cxf/src/main/java/org/apache/geronimo/cxf/pojo/POJOWebServiceContainerFactoryGBean.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-cxf/src/main/java/org/apache/geronimo/cxf/pojo/POJOWebServiceContainerFactoryGBean.java?rev=582070&r1=582069&r2=582070&view=diff
==============================================================================
--- geronimo/server/trunk/modules/geronimo-cxf/src/main/java/org/apache/geronimo/cxf/pojo/POJOWebServiceContainerFactoryGBean.java (original)
+++ geronimo/server/trunk/modules/geronimo-cxf/src/main/java/org/apache/geronimo/cxf/pojo/POJOWebServiceContainerFactoryGBean.java Thu Oct 4 20:49:46 2007
@@ -62,7 +62,8 @@
Kernel kernel,
TransactionManager transactionManager,
URL configurationBaseUrl,
- AnnotationHolder holder)
+ AnnotationHolder holder,
+ String contextRoot)
throws ClassNotFoundException,
IllegalAccessException,
InstantiationException {
@@ -122,6 +123,7 @@
infoBuilder.addReference("TransactionManager", TransactionManager.class, NameFactory.TRANSACTION_MANAGER);
infoBuilder.addAttribute("configurationBaseUrl", URL.class, true);
infoBuilder.addAttribute("holder", AnnotationHolder.class, true);
+ infoBuilder.addAttribute("contextRoot", String.class, true, true);
infoBuilder.setConstructor(new String[]{
"portInfo",
@@ -131,7 +133,8 @@
"kernel",
"TransactionManager",
"configurationBaseUrl",
- "holder"
+ "holder",
+ "contextRoot"
});
GBEAN_INFO = infoBuilder.getBeanInfo();
Modified: geronimo/server/trunk/modules/geronimo-jaxws-builder/src/main/java/org/apache/geronimo/jaxws/builder/JAXWSServiceBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-jaxws-builder/src/main/java/org/apache/geronimo/jaxws/builder/JAXWSServiceBuilder.java?rev=582070&r1=582069&r2=582070&view=diff
==============================================================================
--- geronimo/server/trunk/modules/geronimo-jaxws-builder/src/main/java/org/apache/geronimo/jaxws/builder/JAXWSServiceBuilder.java (original)
+++ geronimo/server/trunk/modules/geronimo-jaxws-builder/src/main/java/org/apache/geronimo/jaxws/builder/JAXWSServiceBuilder.java Thu Oct 4 20:49:46 2007
@@ -156,6 +156,7 @@
containerFactoryData.setAttribute("endpointClassName", servletClassName);
containerFactoryData.setAttribute("componentContext", componentContext);
containerFactoryData.setAttribute("holder", serviceHolder);
+ containerFactoryData.setAttribute("contextRoot", ((WebModule) module).getContextRoot());
try {
context.addGBean(containerFactoryData);
} catch (GBeanAlreadyExistsException e) {