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/06/10 22:19:48 UTC
svn commit: r545929 - in
/geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2:
ejb/ pojo/
Author: gawor
Date: Sun Jun 10 13:19:47 2007
New Revision: 545929
URL: http://svn.apache.org/viewvc?view=rev&rev=545929
Log:
handler injection for ejb-based ws
Modified:
geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/ejb/EJBInterceptor.java
geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/ejb/EJBMessageReceiver.java
geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/ejb/EJBWebServiceContainer.java
geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/ejb/EJBWebServiceGBean.java
geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/pojo/POJOWebServiceContainer.java
Modified: geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/ejb/EJBInterceptor.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/ejb/EJBInterceptor.java?view=diff&rev=545929&r1=545928&r2=545929
==============================================================================
--- geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/ejb/EJBInterceptor.java (original)
+++ geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/ejb/EJBInterceptor.java Sun Jun 10 13:19:47 2007
@@ -42,14 +42,18 @@
private static final Log LOG = LogFactory.getLog(EJBInterceptor.class);
private MessageContext requestMsgCtx;
+ private EJBWebServiceContainer container;
- public EJBInterceptor(MessageContext requestCtx) {
+ public EJBInterceptor(EJBWebServiceContainer container, MessageContext requestCtx) {
+ this.container = container;
this.requestMsgCtx = requestCtx;
}
@AroundInvoke
public Object intercept(javax.interceptor.InvocationContext invContext) throws Exception {
+ this.container.injectHandlers();
+
AxisOperation operation = this.requestMsgCtx.getAxisMessageContext().getAxisOperation();
String mep = operation.getMessageExchangePattern();
Modified: geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/ejb/EJBMessageReceiver.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/ejb/EJBMessageReceiver.java?view=diff&rev=545929&r1=545928&r2=545929
==============================================================================
--- geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/ejb/EJBMessageReceiver.java (original)
+++ geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/ejb/EJBMessageReceiver.java Sun Jun 10 13:19:47 2007
@@ -45,8 +45,10 @@
private DeploymentInfo deploymentInfo;
private Class serviceImplClass;
+ private EJBWebServiceContainer container;
- public EJBMessageReceiver(Class serviceImplClass, DeploymentInfo deploymentInfo) {
+ public EJBMessageReceiver(EJBWebServiceContainer container, Class serviceImplClass, DeploymentInfo deploymentInfo) {
+ this.container = container;
this.serviceImplClass = serviceImplClass;
this.deploymentInfo = deploymentInfo;
}
@@ -70,7 +72,7 @@
LOG.debug("Invoking '" + method.getName() + "' method.");
}
- EJBInterceptor interceptor = new EJBInterceptor(requestMsgCtx);
+ EJBInterceptor interceptor = new EJBInterceptor(this.container, requestMsgCtx);
ProtectedMessageContext jaxwsContext = new ProtectedMessageContext(requestMsgCtx);
Modified: geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/ejb/EJBWebServiceContainer.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/ejb/EJBWebServiceContainer.java?view=diff&rev=545929&r1=545928&r2=545929
==============================================================================
--- geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/ejb/EJBWebServiceContainer.java (original)
+++ geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/ejb/EJBWebServiceContainer.java Sun Jun 10 13:19:47 2007
@@ -20,10 +20,16 @@
import java.net.URL;
import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import javax.xml.ws.WebServiceContext;
+import javax.xml.ws.WebServiceException;
import org.apache.axis2.util.JavaUtils;
import org.apache.geronimo.axis2.Axis2WebServiceContainer;
import org.apache.geronimo.axis2.AxisServiceGenerator;
+import org.apache.geronimo.jaxws.JAXWSAnnotationProcessor;
+import org.apache.geronimo.jaxws.JNDIResolver;
import org.apache.geronimo.jaxws.PortInfo;
import org.apache.openejb.DeploymentInfo;
@@ -46,9 +52,23 @@
}
@Override
+ public void init() throws Exception {
+ super.init();
+
+ // configure handlers
+ try {
+ configureHandlers();
+ } catch (Exception e) {
+ throw new WebServiceException("Error configuring handlers", e);
+ }
+ }
+
+ @Override
protected AxisServiceGenerator createServiceGenerator() {
AxisServiceGenerator serviceGenerator = super.createServiceGenerator();
- serviceGenerator.setMessageReceiver(new EJBMessageReceiver(this.endpointClass, this.deploymnetInfo));
+ EJBMessageReceiver messageReceiver =
+ new EJBMessageReceiver(this, this.endpointClass, this.deploymnetInfo);
+ serviceGenerator.setMessageReceiver(messageReceiver);
return serviceGenerator;
}
@@ -83,5 +103,31 @@
//when setContextRoot is called.
configurationContext.setContextRoot(contextRoot);
}
+ }
+
+ public synchronized void injectHandlers() {
+ if (this.annotationProcessor != null) {
+ // assume injection was already done
+ return;
+ }
+
+ WebServiceContext wsContext = null;
+ try {
+ InitialContext ctx = new InitialContext();
+ wsContext = (WebServiceContext) ctx.lookup("java:comp/WebServiceContext");
+ } catch (NamingException e) {
+ throw new WebServiceException("Failed to lookup WebServiceContext", e);
+ }
+
+ this.annotationProcessor = new JAXWSAnnotationProcessor(new JNDIResolver(), wsContext);
+ super.injectHandlers();
+ }
+
+ @Override
+ public void destroy() {
+ // call handler preDestroy
+ destroyHandlers();
+
+ super.destroy();
}
}
Modified: geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/ejb/EJBWebServiceGBean.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/ejb/EJBWebServiceGBean.java?view=diff&rev=545929&r1=545928&r2=545929
==============================================================================
--- geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/ejb/EJBWebServiceGBean.java (original)
+++ geronimo/server/trunk/modules/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/ejb/EJBWebServiceGBean.java Sun Jun 10 13:19:47 2007
@@ -85,7 +85,7 @@
public void doStart() throws Exception {
}
- public void doStop() throws Exception {
+ public void doStop() throws Exception {
if (this.soapHandler != null) {
this.soapHandler.removeWebService(this.location);
}
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?view=diff&rev=545929&r1=545928&r2=545929
==============================================================================
--- 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 Sun Jun 10 13:19:47 2007
@@ -60,13 +60,13 @@
}
@Override
- public void init() throws Exception {
+ public void init() throws Exception {
+ super.init();
+
// XXX: This is a global operation
FactoryRegistry.setFactory(EndpointLifecycleManagerFactory.class,
new POJOEndpointLifecycleManagerFactory());
-
- super.init();
-
+
this.endpointInstance = this.endpointClass.newInstance();
this.configurationContext.setServicePath(this.portInfo.getLocation());