You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by an...@apache.org on 2007/04/16 01:08:07 UTC
svn commit: r529090 - in
/incubator/tuscany/java/sca/modules/binding-ws-axis2: ./ src/main/assembly/
src/main/java/org/apache/tuscany/binding/axis2/
src/main/resources/org/apache/tuscany/binding/axis2/engine/config/
src/test/java/org/apache/tuscany/bin...
Author: antelder
Date: Sun Apr 15 16:08:06 2007
New Revision: 529090
URL: http://svn.apache.org/viewvc?view=rev&rev=529090
Log:
Axis2 binding bring up, get WS services going and add a service to the helloworld testcase
Added:
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/test/java/org/apache/tuscany/binding/axis2/itests/HelloWorldService.java (with props)
Modified:
incubator/tuscany/java/sca/modules/binding-ws-axis2/pom.xml
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/assembly/axis2.xml
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2BindingBuilder.java
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ModuleActivator.java
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ServiceBinding.java
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ServiceInOutSyncMessageReceiver.java
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ServiceServlet.java
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/TuscanyDispatcher.java
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/resources/org/apache/tuscany/binding/axis2/engine/config/axis2.xml
incubator/tuscany/java/sca/modules/binding-ws-axis2/src/test/resources/org/apache/tuscany/binding/axis2/itests/HelloWorld.composite
Modified: incubator/tuscany/java/sca/modules/binding-ws-axis2/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/pom.xml?view=diff&rev=529090&r1=529089&r2=529090
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-axis2/pom.xml (original)
+++ incubator/tuscany/java/sca/modules/binding-ws-axis2/pom.xml Sun Apr 15 16:08:06 2007
@@ -95,6 +95,17 @@
<artifactId>tuscany-databinding-axiom</artifactId>
<version>1.0-incubating-SNAPSHOT</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-http</artifactId>
+ <version>1.0-incubating-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-http-jetty</artifactId>
+ <version>1.0-incubating-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-kernel</artifactId>
Modified: incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/assembly/axis2.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/assembly/axis2.xml?view=diff&rev=529090&r1=529089&r2=529090
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/assembly/axis2.xml (original)
+++ incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/assembly/axis2.xml Sun Apr 15 16:08:06 2007
@@ -7,32 +7,300 @@
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
- * under the License.
+ * under the License.
-->
-<assembly>
- <id>bin</id>
- <includeBaseDirectory>false</includeBaseDirectory>
- <formats>
- <format>zip</format>
- <format>tar.gz</format>
- </formats>
-
- <dependencySets>
- <dependencySet>
- <outputDirectory>extension</outputDirectory>
- <includes>
- <include>org.apache.tuscany.bindings:axis2</include>
- </includes>
- <fileMode>644</fileMode>
- </dependencySet>
- </dependencySets>
-</assembly>
+<axisconfig name="AxisJava2.0">
+ <!-- ================================================= -->
+ <!-- Parameters -->
+ <!-- ================================================= -->
+ <parameter name="hotdeployment" locked="false">false</parameter>
+ <parameter name="hotupdate" locked="false">false</parameter>
+ <parameter name="enableMTOM" locked="false">false</parameter>
+ <parameter name="enableSwA" locked="false">false</parameter>
+
+ <!--Uncomment if you want to enable file caching for attachments -->
+ <!--parameter name="cacheAttachments" locked="false">true</parameter>
+ <parameter name="attachmentDIR" locked="false"></parameter>
+ <parameter name="sizeThreshold" locked="false">4000</parameter-->
+
+ <!--This will give out the timout of the configuration contexts, in seconds-->
+ <parameter name="ConfigContextTimeoutInterval" locked="false">30</parameter>
+
+ <!--During a fault, stacktrace can be sent with the fault message. The following flag will control -->
+ <!--that behaviour.-->
+ <parameter name="sendStacktraceDetailsWithFaults" locked="false">true</parameter>
+
+ <!--If there aren't any information available to find out the fault reason, we set the message of the expcetion-->
+ <!--as the faultreason/Reason. But when a fault is thrown from a service or some where, it will be -->
+ <!--wrapped by different levels. Due to this the initial exception message can be lost. If this flag-->
+ <!--is set then, Axis2 tries to get the first exception and set its message as the faultreason/Reason.-->
+ <parameter name="DrillDownToRootCauseForFaultReason" locked="false">false</parameter>
+
+ <parameter name="userName" locked="false">admin</parameter>
+ <parameter name="password" locked="false">axis2</parameter>
+
+ <!--Following params will set the proper context paths for invocations. All the endpoints will have a commons context-->
+ <!--root which can configured using the following contextRoot parameter-->
+ <!--<parameter name="contextRoot" locked="false">axis2</parameter>-->
+
+ <!--Our HTTP endpoints can handle both REST and SOAP. Following parameters can be used to distingiush those endpoints-->
+ <!--In case of a servlet, if you change this you have to manually change the settings of your servlet container to map this -->
+ <!--context path to proper Axis2 servlets-->
+ <!--<parameter name="servicePath" locked="false">services</parameter>-->
+ <!--<parameter name="restPath" locked="false">rest</parameter>-->
+
+
+ <!--Set the flag to true if you want to enable transport level session mangment-->
+ <parameter name="manageTransportSession" locked="false">false</parameter>
+
+ <!--Following two parameters will be used to handle REST in Axis2. The default settings will make Axis2 to have two-->
+ <!--different endpoints, one for REST (AxisRESTServlet) one for SOAP message handling (AxisServlet). But following-->
+ <!--parameters help to tweak the message handling of two main servlets. -->
+
+ <!-- If the enableRESTInAxis2MainServlet is true, then Axis2MainServlet will handle both SOAP and REST messages -->
+ <parameter name="enableRESTInAxis2MainServlet" locked="true">true</parameter>
+
+ <!-- Following parameter will completely disable REST handling in both the servlets-->
+ <parameter name="disableREST" locked="true">false</parameter>
+
+ <!-- This will disable the separate servlet we have for REST handling. -->
+ <parameter name="disableSeparateEndpointForREST" locked="true">false</parameter>
+
+ <!-- If you have a frontend host which exposes this webservice using a different public URL -->
+ <!-- use this parameter to override autodetected url -->
+ <!--<parameter name="httpFrontendHostUrl" locked="false">https://someotherhost/context</parameter>-->
+
+
+ <!-- The way of adding listener to the system-->
+ <!-- <listener class="org.apache.axis2.ObserverIMPL">-->
+ <!-- <parameter name="RSS_URL" locked="false">http://127.0.0.1/rss</parameter>-->
+ <!-- </listener>-->
+
+ <!-- ================================================= -->
+ <!-- Message Receivers -->
+ <!-- ================================================= -->
+ <!--This is the Deafult Message Receiver for the system , if you want to have MessageReceivers for -->
+ <!--all the other MEP implement it and add the correct entry to here , so that you can refer from-->
+ <!--any operation -->
+ <!--Note : You can ovride this for particular service by adding the same element with your requirement-->
+ <messageReceivers>
+ <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
+ class="org.apache.tuscany.binding.axis2.Axis2ServiceInMessageReceiver"/>
+ <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
+ class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
+ <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
+ class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+ <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
+ class="org.apache.tuscany.binding.axis2.Axis2ServiceInOutAsyncMessageReceiver"/>
+ <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
+ class="org.apache.tuscany.binding.axis2.Axis2ServiceInOutSyncMessageReceiver"/>
+ </messageReceivers>
+ <!-- ================================================= -->
+ <!-- Transport Ins -->
+ <!-- ================================================= -->
+ <transportReceiver name="http"
+ class="org.apache.axis2.transport.http.SimpleHTTPServer">
+ <parameter name="port" locked="false">6060</parameter>
+ <!-- Here is the complete list of supported parameters (see example settings further below):
+ port: the port to listen on (default 6060)
+ hostname: if non-null, url prefix used in reply-to endpoint references (default null)
+ originServer: value of http Server header in outgoing messages (default "Simple-Server/1.1")
+ requestTimeout: value in millis of time that requests can wait for data (default 20000)
+ requestTcpNoDelay: true to maximize performance and minimize latency (default true)
+ false to minimize bandwidth consumption by combining segments
+ requestCoreThreadPoolSize: number of threads available for request processing (unless queue fills up) (default 25)
+ requestMaxThreadPoolSize: number of threads available for request processing if queue fills us (default 150)
+ note that default queue never fills up: see HttpFactory
+ threadKeepAliveTime: time to keep threads in excess of core size alive while inactive (default 180)
+ note that no such threads can exist with default unbounded request queue
+ threadKeepAliveTimeUnit: TimeUnit of value in threadKeepAliveTime (default SECONDS) (default SECONDS)
+ -->
+ <!-- <parameter name="hostname" locked="false">http://www.myApp.com/ws</parameter> -->
+ <!-- <parameter name="originServer" locked="false">My-Server/1.1</parameter> -->
+ <!-- <parameter name="requestTimeout" locked="false">10000</parameter> -->
+ <!-- <parameter name="requestTcpNoDelay" locked="false">false</parameter> -->
+ <!-- <parameter name="requestCoreThreadPoolSize" locked="false">50</parameter> -->
+ <!-- <parameter name="RequestMaxThreadPoolSize" locked="false">100</parameter> -->
+ <!-- <parameter name="threadKeepAliveTime" locked="false">240000</parameter> -->
+ <!-- <parameter name="threadKeepAliveTimeUnit" locked="false">MILLISECONDS</parameter> -->
+ </transportReceiver>
+
+ <!--Uncomment this and configure as appropriate for JMS transport support, after setting up your JMS environment (e.g. ActiveMQ)
+ <transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener">
+ <parameter name="myTopicConnectionFactory" locked="false">
+ <parameter name="java.naming.factory.initial" locked="false">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>
+ <parameter name="java.naming.provider.url" locked="false">tcp://localhost:61616</parameter>
+ <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">TopicConnectionFactory</parameter>
+ </parameter>
+
+ <parameter name="myQueueConnectionFactory" locked="false">
+ <parameter name="java.naming.factory.initial" locked="false">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>
+ <parameter name="java.naming.provider.url" locked="false">tcp://localhost:61616</parameter>
+ <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>
+ </parameter>
+
+ <parameter name="default" locked="false">
+ <parameter name="java.naming.factory.initial" locked="false">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>
+ <parameter name="java.naming.provider.url" locked="false">tcp://localhost:61616</parameter>
+ <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>
+ </parameter>
+ </transportReceiver>-->
+
+ <!--Uncomment if you want to have SMTP transport support-->
+ <!--<transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">-->
+ <!--<parameter name="transport.mail.pop3.host" locked="false">127.0.0.1</parameter>-->
+ <!--<parameter name="transport.mail.pop3.user" locked="false">axis2</parameter>-->
+ <!--<parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>-->
+ <!--<parameter name="transport.mail.pop3.port" locked="false">110</parameter>-->
+ <!--<parameter name="transport.mail.replyToAddress" locked="false">axis2@127.0.0.1</parameter>-->
+ <!--</transportReceiver>-->
+
+ <transportReceiver name="tcp"
+ class="org.apache.axis2.transport.tcp.TCPServer">
+ <parameter name="port" locked="false">6060</parameter>
+ <!--If you want to give your own host address for EPR generation-->
+ <!--uncommet following paramter , and set as you required.-->
+ <!--<parameter name="hostname" locked="false">tcp://myApp.com/ws</parameter>-->
+ </transportReceiver>
+
+ <!-- ================================================= -->
+ <!-- Transport Outs -->
+ <!-- ================================================= -->
+
+ <transportSender name="tcp"
+ class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+ <transportSender name="local"
+ class="org.apache.axis2.transport.local.LocalTransportSender"/>
+ <transportSender name="http"
+ class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+ <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+ <parameter name="Transfer-Encoding" locked="false">chunked</parameter>
+ </transportSender>
+ <transportSender name="https"
+ class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+ <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+ <parameter name="Transfer-Encoding" locked="false">chunked</parameter>
+ </transportSender>
+
+ <!-- Commented out by Tuscany
+ <transportSender name="jms"
+ class="org.apache.axis2.transport.jms.JMSSender"/>
+ -->
+
+ <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+ <transportSender name="mailto" class="org.apache.axis2.transport.mail.MailTransportSender">
+ <parameter name="transport.mail.smtp.host" locked="false">127.0.0.1</parameter>
+ <parameter name="transport.mail.smtp.user" locked="false">axis2</parameter>
+ <parameter name="transport.mail.smtp.password" locked="false">axis2</parameter>
+ <parameter name="transport.mail.smtp.port" locked="false">25</parameter>
+ </transportSender>
+ -->
+
+ <!-- ================================================= -->
+ <!-- Global Modules -->
+ <!-- ================================================= -->
+ <!-- Comment this to disable Addressing -->
+ <!-- Commented out by Tuscany
+ <module ref="addressing"/>
+ -->
+
+ <!--Configuring module , providing parameters for modules whether they refer or not-->
+ <!--<moduleConfig name="addressing">-->
+ <!--<parameter name="addressingPara" locked="false">N/A</parameter>-->
+ <!--</moduleConfig>-->
+
+ <!-- ================================================= -->
+ <!-- Phases -->
+ <!-- ================================================= -->
+ <phaseOrder type="InFlow">
+ <!-- System pre defined phases -->
+ <phase name="Transport">
+ <handler name="TuscanyDispatcher"
+ class="org.apache.tuscany.binding.axis2.TuscanyDispatcher">
+ <order phase="Transport"/>
+ </handler>
+ <handler name="RequestURIBasedDispatcher"
+ class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+ <order phase="Transport"/>
+ </handler>
+ <handler name="SOAPActionBasedDispatcher"
+ class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+ <order phase="Transport"/>
+ </handler>
+ </phase>
+ <phase name="Security"/>
+ <phase name="PreDispatch"/>
+ <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+ <handler name="AddressingBasedDispatcher"
+ class="org.apache.axis2.engine.AddressingBasedDispatcher">
+ <order phase="Dispatch"/>
+ </handler>
+
+ <handler name="SOAPMessageBodyBasedDispatcher"
+ class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+ <order phase="Dispatch"/>
+ </handler>
+ <handler name="InstanceDispatcher"
+ class="org.apache.axis2.engine.InstanceDispatcher">
+ <order phase="Dispatch"/>
+ </handler>
+ </phase>
+ <!-- System pre defined phases -->
+ <!-- After Postdispatch phase module author or or service author can add any phase he want -->
+ <phase name="OperationInPhase"/>
+ </phaseOrder>
+ <phaseOrder type="OutFlow">
+ <!-- user can add his own phases to this area -->
+ <phase name="OperationOutPhase"/>
+ <!--system predefined phase-->
+ <!--these phase will run irrespective of the service-->
+ <phase name="PolicyDetermination"/>
+ <phase name="MessageOut"/>
+ <phase name="Security"/>
+ </phaseOrder>
+ <phaseOrder type="InFaultFlow">
+ <phase name="PreDispatch"/>
+ <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
+ <handler name="RequestURIBasedDispatcher"
+ class="org.apache.axis2.engine.RequestURIBasedDispatcher">
+ <order phase="Dispatch"/>
+ </handler>
+
+ <handler name="SOAPActionBasedDispatcher"
+ class="org.apache.axis2.engine.SOAPActionBasedDispatcher">
+ <order phase="Dispatch"/>
+ </handler>
+
+ <handler name="AddressingBasedDispatcher"
+ class="org.apache.axis2.engine.AddressingBasedDispatcher">
+ <order phase="Dispatch"/>
+ </handler>
+
+ <handler name="SOAPMessageBodyBasedDispatcher"
+ class="org.apache.axis2.engine.SOAPMessageBodyBasedDispatcher">
+ <order phase="Dispatch"/>
+ </handler>
+ <handler name="InstanceDispatcher"
+ class="org.apache.axis2.engine.InstanceDispatcher">
+ <order phase="PostDispatch"/>
+ </handler>
+ </phase>
+ <!-- user can add his own phases to this area -->
+ <phase name="OperationInFaultPhase"/>
+ </phaseOrder>
+ <phaseOrder type="OutFaultFlow">
+ <!-- user can add his own phases to this area -->
+ <phase name="OperationOutFaultPhase"/>
+ <phase name="PolicyDetermination"/>
+ <phase name="MessageOut"/>
+ </phaseOrder>
+</axisconfig>
Modified: incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2BindingBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2BindingBuilder.java?view=diff&rev=529090&r1=529089&r2=529090
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2BindingBuilder.java (original)
+++ incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2BindingBuilder.java Sun Apr 15 16:08:06 2007
@@ -19,15 +19,23 @@
package org.apache.tuscany.binding.axis2;
import java.net.URI;
+import java.util.List;
+
+import javax.wsdl.Port;
+import javax.wsdl.extensions.soap.SOAPAddress;
import org.apache.axiom.om.OMElement;
import org.apache.axis2.AxisFault;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.tuscany.assembly.CompositeReference;
+import org.apache.tuscany.assembly.CompositeService;
import org.apache.tuscany.binding.axis2.util.TuscanyAxisConfigurator;
import org.apache.tuscany.binding.ws.WebServiceBinding;
+import org.apache.tuscany.http.ServletHostExtensionPoint;
+import org.apache.tuscany.interfacedef.InterfaceContract;
import org.apache.tuscany.spi.builder.BuilderException;
import org.apache.tuscany.spi.component.ReferenceBinding;
+import org.apache.tuscany.spi.component.ServiceBinding;
import org.apache.tuscany.spi.deployer.DeploymentContext;
import org.apache.tuscany.spi.extension.BindingBuilderExtension;
@@ -40,7 +48,7 @@
// TODO: what to do about the base URI?
private static final String BASE_URI = "http://localhost:8080/";
-// private ServletHost servletHost;
+ private ServletHostExtensionPoint servletHost;
private ConfigurationContext configContext;
//
@@ -50,168 +58,43 @@
initAxis();
}
-// public void setServletHost(ServletHost servletHost) {
-// this.servletHost = servletHost;
-// }
-//
-// public void setWorkContext(WorkContext workContext) {
-// this.workContext = workContext;
-// }
+ public void setServletHost(ServletHostExtensionPoint servletHost) {
+ this.servletHost = servletHost;
+ }
@Override
protected Class<WebServiceBinding> getBindingType() {
return WebServiceBinding.class;
}
- public ReferenceBinding build(CompositeReference compositeReference,
- WebServiceBinding wsBinding,
- DeploymentContext context) throws BuilderException {
- compositeReference.getInterfaceContract().getInterface().setDefaultDataBinding(OMElement.class.getName());
-
+ @Override
+ public ReferenceBinding build(CompositeReference compositeReference, WebServiceBinding wsBinding, DeploymentContext context) throws BuilderException {
+
+ // Set to use the Axiom data binding
+ compositeReference.getInterfaceContract().getInterface().setDefaultDataBinding(OMElement.class.getName());
+
URI targetURI = wsBinding.getURI() != null ? URI.create(wsBinding.getURI()) : URI.create("foo");
- return new Axis2ReferenceBinding(URI.create(context.getComponentId() + "#" + wsBinding.getName()), targetURI, wsBinding);
+ URI name = URI.create(context.getComponentId() + "#" + wsBinding.getName());
+
+ return new Axis2ReferenceBinding(name, targetURI, wsBinding);
}
-
-// @SuppressWarnings("unchecked")
-// public ServiceBinding build(
-// ServiceDefinition serviceDefinition,
-// WebServiceBindingDefinition wsBinding, DeploymentContext deploymentContext) {
-//
-// try {
-// // Set the default databinding
-// ServiceContract outboundContract = serviceDefinition.getServiceContract();
-// if (outboundContract instanceof WSDLServiceContract) {
-// outboundContract.setDataBinding(OM_DATA_BINDING);
-// }
-//
-// // TODO: TUSCANY-1148, <binding.ws> with no wsdl only works with <interface.wsdl>
-// if (wsBinding.getWSDLDefinition() == null) {
-// if (outboundContract instanceof WSDLServiceContract) {
-// String ns = ((WSDLServiceContract)outboundContract).getPortType().getQName().getNamespaceURI();
-// wsBinding.setWSDLDefinition(wsdlReg.getDefinition(ns));
-// } else {
-// throw new IllegalStateException("<binding.ws> with no WSDL requires using <interface.wsdl>");
-// }
-// }
-//
-// // FIXME: We need to define how the WSDL PortType is honored in the case that
-// // both the service.ws and interface.wsdl are in place.
-// // The WSDL portType from the WSDL Port decides the incoming SOAP message format
-// // There are also cases that interface.java is used.
-//
-// ServiceContract<?> inboundContract;
-// Port port = wsBinding.getWSDLPort();
-// if (port == null) {
-// // FIXME: [rfeng] No WSDL is referenced by service.ws, we need to create one from
-// // the outbound service contract if it's JavaServiceContract
-// inboundContract = outboundContract;
-// }
-//
-// PortType portType = wsBinding.getWSDLPort().getBinding().getPortType();
-// inboundContract = introspector.introspect(portType);
-//
-// // FIXME:
-// inboundContract.setInterfaceClass(serviceDefinition.getServiceContract().getInterfaceClass());
-// inboundContract.setDataBinding(OM_DATA_BINDING);
-// inboundContract.setCallbackName(serviceDefinition.getServiceContract().getCallbackName());
-//
-//// inboundContract.setInteractionScope(serviceDefinition.getServiceContract().getInteractionScope()); // TODO: gone
-//
-//// TODO: gone
-//// try {
-//// wireService.checkCompatibility(inboundContract, outboundContract, true);
-//// } catch (IncompatibleServiceContractException e) {
-//// throw new Axis2BindingBuilderRuntimeException(e);
-//// }
-//
-// URI axisServiceName;
-// if (wsBinding.isSpec10Compliant()) {
-// wsBinding.setActualURI(computeActualURI(wsBinding, BASE_URI, serviceDefinition.getTarget(), serviceDefinition.getUri()));
-// String name = wsBinding.getActualURI().getPath();
-// if (name != null && name.length() > 1 && name.startsWith("/")) {
-// name = name.substring(1);
-// }
-// axisServiceName = URI.create(name);
-// } else {
-// axisServiceName = serviceDefinition.getUri(); // TODO: verify name
-// }
-//
-// ServiceBinding serviceBinding =
-// new Axis2ServiceBinding(axisServiceName, outboundContract, inboundContract, wsBinding,
-// servletHost, configContext, workContext);
-// return serviceBinding;
-//
-// } catch (InvalidServiceContractException e) {
-// throw new Axis2BindingBuilderRuntimeException(e);
-// }
-// }
-//
-// @SuppressWarnings("unchecked")
-// @Override
-// public ReferenceBinding buildx(
-// ReferenceDefinition boundReferenceDefinition,
-// WebServiceBinding wsBinding,
-// DeploymentContext deploymentContext) {
-//
-// // Set the default binding
-// ServiceContract inboundContract = boundReferenceDefinition.getServiceContract();
-// if (inboundContract instanceof WSDLServiceContract) {
-// inboundContract.setDataBinding(OM_DATA_BINDING);
-// }
-//
-// // TODO: TUSCANY-1148, <binding.ws> with no wsdl only works with <interface.wsdl>
-// if (wsBinding.getWSDLDefinition() == null) {
-// if (inboundContract instanceof WSDLServiceContract) {
-// String ns = ((WSDLServiceContract)inboundContract).getPortType().getQName().getNamespaceURI();
-// wsBinding.setWSDLDefinition(wsdlReg.getDefinition(ns));
-// } else {
-// throw new IllegalStateException("<binding.ws> with no WSDL requires using <interface.wsdl>");
-// }
-// }
-//
-// // FIXME: We need to define how the WSDL PortType is honored in the case that
-// // both the binding.ws and interface.wsdl are in place
-// // The WSDL portType from the WSDL Port decides the incoming SOAP message format
-//
-// ServiceContract<?> outboundContract = inboundContract;
-// Port port = wsBinding.getWSDLPort();
-// if (port == null) {
-// // FIXME: [rfeng] No WSDL is referenced by binding.ws, we need to create one from
-// // the inbound service contract if it's JavaServiceContract
-// outboundContract = inboundContract;
-// }
-// PortType portType = port.getBinding().getPortType();
-// try {
-// outboundContract = introspector.introspect(portType);
-// } catch (InvalidServiceContractException e) {
-// new Axis2BindingBuilderRuntimeException(e);
-// }
-//
-// // Set the default databinding
-// outboundContract.setDataBinding(OM_DATA_BINDING);
-// //FIXME ... need to figure out how to specify scope on wsdl.
-//// outboundContract.setInteractionScope(inboundContract.getInteractionScope()); // methdod gone
-//
-//// TODO: gone
-//// try {
-//// wireService.checkCompatibility(inboundContract, outboundContract, true);
-//// } catch (IncompatibleServiceContractException e) {
-//// throw new Axis2BindingBuilderRuntimeException(e);
-//// }
-//
-// if (wsBinding.isSpec10Compliant()) {
-// wsBinding.setActualURI(computeActualURI(wsBinding, BASE_URI, null, boundReferenceDefinition.getUri()));
-// }
-//
-// return new Axis2ReferenceBinding(boundReferenceDefinition.getUri(), wsBinding,
-// inboundContract, outboundContract, workContext);
-//
-// }
-//
-// protected Class<WebServiceBindingDefinition> getBindingType() {
-// return WebServiceBindingDefinition.class;
-// }
-//
+
+ @Override
+ public ServiceBinding build(CompositeService compositeService, WebServiceBinding wsBinding, DeploymentContext context) throws BuilderException {
+
+ InterfaceContract interfaceContract = compositeService.getInterfaceContract();
+
+ // Set to use the Axiom data binding
+ interfaceContract.getInterface().setDefaultDataBinding(OMElement.class.getName());
+
+ URI name = URI.create(context.getComponentId() + "#" + wsBinding.getName());
+ URI uri = computeActualURI(wsBinding, BASE_URI, name, compositeService.getName()).normalize();
+
+ ServiceBinding serviceBinding = new Axis2ServiceBinding(uri, interfaceContract, null, wsBinding, servletHost, configContext, null);
+
+ return serviceBinding;
+ }
+
protected void initAxis() {
// TODO: consider having a system component wrapping the Axis2 ConfigContext
try {
@@ -220,93 +103,103 @@
throw new RuntimeException(e); // TODO better exception
}
}
-//
-// /**
-// * Compute the endpoint URI based on section 2.1.1 of the WS binding spec
-// * 1. The URIs in the endpoint(s) of the referenced WSDL, which may be relative
-// * 2. The URI specified by the wsa:Address element of the wsa:EndpointReference, which may be relative
-// * 3. The explicitly stated URI in the "uri" attribute of the binding.ws element, which may be relative,
-// * 4. The implicit URI as defined by in section 1.7 in the SCA Assembly spec
-// * If the <binding.ws> has no wsdlElement but does have a uri attribute then the uri takes precidence
-// * over any implicitly used WSDL.
-// * @param parent
-// */
-// protected URI computeActualURI(WebServiceBindingDefinition wsBinding, String baseURI, URI componentURI, URI bindingName) {
-// URI wsdlURI = null;
-// if (wsBinding.getServiceName() != null && wsBinding.getBindingName() == null) {
-// // <binding.ws> explicitly points at a wsdl port, may be a relative URI
-// wsdlURI = wsBinding.getPortURI();
-// }
-// if (wsdlURI != null && wsdlURI.isAbsolute()) {
-// if (wsBinding.getURI() != null && (wsBinding.getServiceName() != null && wsBinding.getBindingName() == null)) {
-// throw new IllegalArgumentException("binding URI cannot be used with absolute WSDL endpoint URI");
-// }
-// return URI.create(wsdlURI.toString());
-// }
-//
-// // there is no wsdl port endpoint URI or that URI is relative
-//
-// URI bindingURI = null;
-// if (wsBinding.getURI() != null) {
-// bindingURI = URI.create(wsBinding.getURI());
-// }
-//
-// if (bindingURI != null && bindingURI.isAbsolute()) {
-// if (wsdlURI != null) {
-// return URI.create(bindingURI + "/" + wsdlURI).normalize();
-// } else {
-// return bindingURI;
-// }
-// }
-//
-// if (componentURI == null) { // null for references
-// wsdlURI = wsBinding.getPortURI();
-// if (bindingURI != null) {
-// return URI.create(wsdlURI + "/" + bindingURI).normalize();
-// } else {
-// return wsdlURI;
-// }
-// }
-//
-//
-// // TODO: TUSCANY-xxx, how to tell if component has multiple services using <binding.ws>?
-// // boolean singleService = (parent != null) && (((Component)parent.getChild(componentURI.toString())).getInboundWires().size() == 1);
-// // if (bindingURI == null && !singleService) {
-//
-// if (bindingURI == null) {
-// bindingURI = bindingName;
-// }
-//
-// if (componentURI.isAbsolute()) {
-// if (bindingURI == null && wsdlURI == null) {
-// return componentURI;
-// } else if (wsdlURI == null) {
-// return URI.create(componentURI + "/" + bindingURI).normalize();
-// } else if (bindingURI == null) {
-// return URI.create(componentURI + "/" + wsdlURI).normalize();
-// } else {
-// return URI.create(componentURI + "/" + bindingURI + "/" + wsdlURI).normalize();
-// }
-// }
-//
-// String actualURI = "";
-//
-// if (bindingURI == null) {
-// actualURI = baseURI + "/" + componentURI + "/";
-// } else {
-// actualURI = baseURI + "/" + componentURI + "/" + bindingURI + "/";
-// }
-//
-// if (wsdlURI != null) {
-// actualURI = actualURI + wsdlURI.toString();
-// }
-//
-// if (actualURI.endsWith("/")) {
-// actualURI = actualURI.substring(0, actualURI.length() -1);
-// }
-//
-// // normalize to handle any . or .. occurances
-// return URI.create(actualURI).normalize();
-// }
+ /**
+ * Compute the endpoint URI based on section 2.1.1 of the WS binding spec
+ * 1. The URIs in the endpoint(s) of the referenced WSDL, which may be relative
+ * 2. The URI specified by the wsa:Address element of the wsa:EndpointReference, which may be relative
+ * 3. The explicitly stated URI in the "uri" attribute of the binding.ws element, which may be relative,
+ * 4. The implicit URI as defined by in section 1.7 in the SCA Assembly spec
+ * If the <binding.ws> has no wsdlElement but does have a uri attribute then the uri takes precidence
+ * over any implicitly used WSDL.
+ * @param parent
+ */
+ protected URI computeActualURI(WebServiceBinding wsBinding, String baseURI, URI componentURI, String bindingName) {
+ URI wsdlURI = null;
+ if (wsBinding.getServiceName() != null && wsBinding.getBindingName() == null) {
+ // <binding.ws> explicitly points at a wsdl port, may be a relative URI
+ wsdlURI = getEndpoint(wsBinding.getPort());
+ }
+ if (wsdlURI != null && wsdlURI.isAbsolute()) {
+ if (wsBinding.getURI() != null && (wsBinding.getServiceName() != null && wsBinding.getBindingName() == null)) {
+ throw new IllegalArgumentException("binding URI cannot be used with absolute WSDL endpoint URI");
+ }
+ return URI.create(wsdlURI.toString());
+ }
+
+ // there is no wsdl port endpoint URI or that URI is relative
+
+ URI bindingURI = null;
+ if (wsBinding.getURI() != null) {
+ bindingURI = URI.create(wsBinding.getURI());
+ }
+
+ if (bindingURI != null && bindingURI.isAbsolute()) {
+ if (wsdlURI != null) {
+ return URI.create(bindingURI + "/" + wsdlURI);
+ } else {
+ return bindingURI;
+ }
+ }
+
+ if (componentURI == null) { // null for references
+ wsdlURI = getEndpoint(wsBinding.getPort());
+ if (bindingURI != null) {
+ return URI.create(wsdlURI + "/" + bindingURI);
+ } else {
+ return wsdlURI;
+ }
+ }
+
+ // TODO: TUSCANY-xxx, how to tell if component has multiple services using <binding.ws>?
+ // boolean singleService = (parent != null) && (((Component)parent.getChild(componentURI.toString())).getInboundWires().size() == 1);
+ // if (bindingURI == null && !singleService) {
+
+ if (bindingURI == null) {
+ bindingURI = URI.create(bindingName);
+ }
+
+ if (componentURI.isAbsolute()) {
+ if (bindingURI == null && wsdlURI == null) {
+ return componentURI;
+ } else if (wsdlURI == null) {
+ return URI.create(componentURI + "/" + bindingURI);
+ } else if (bindingURI == null) {
+ return URI.create(componentURI + "/" + wsdlURI);
+ } else {
+ return URI.create(componentURI + "/" + bindingURI + "/" + wsdlURI);
+ }
+ }
+
+ String actualURI = "";
+
+ if (bindingURI == null) {
+ actualURI = baseURI + "/" + componentURI + "/";
+ } else {
+ actualURI = baseURI + "/" + componentURI + "/" + bindingURI + "/";
+ }
+
+ if (wsdlURI != null) {
+ actualURI = actualURI + wsdlURI.toString();
+ }
+
+ if (actualURI.endsWith("/")) {
+ actualURI = actualURI.substring(0, actualURI.length() -1);
+ }
+
+ return URI.create(actualURI);
+ }
+
+ /**
+ * Returns the endpoint of a given port.
+ */
+ protected URI getEndpoint(Port wsdlPort) {
+ final List wsdlPortExtensions = wsdlPort.getExtensibilityElements();
+ for (final Object extension : wsdlPortExtensions) {
+ if (extension instanceof SOAPAddress) {
+ return URI.create(((SOAPAddress) extension).getLocationURI());
+ }
+ }
+ return null;
+ }
}
Modified: incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ModuleActivator.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ModuleActivator.java?view=diff&rev=529090&r1=529089&r2=529090
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ModuleActivator.java (original)
+++ incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ModuleActivator.java Sun Apr 15 16:08:06 2007
@@ -23,20 +23,26 @@
import org.apache.tuscany.binding.ws.xml.WebServiceBindingProcessor;
import org.apache.tuscany.contribution.processor.StAXArtifactProcessorExtensionPoint;
+import org.apache.tuscany.http.ServletHostExtensionPoint;
import org.apache.tuscany.spi.bootstrap.ExtensionPointRegistry;
import org.apache.tuscany.spi.bootstrap.ModuleActivator;
import org.apache.tuscany.spi.builder.BuilderRegistry;
public class Axis2ModuleActivator implements ModuleActivator {
- public void start(ExtensionPointRegistry registry) {
- StAXArtifactProcessorExtensionPoint artifactProcessorRegistry = registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
+ public void start(ExtensionPointRegistry extensionPointRegistry) {
+
+ StAXArtifactProcessorExtensionPoint artifactProcessorRegistry = extensionPointRegistry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
artifactProcessorRegistry.addExtension(new WebServiceBindingProcessor());
- BuilderRegistry builderRegistry = registry.getExtensionPoint(BuilderRegistry.class);
+ ServletHostExtensionPoint servletHost = extensionPointRegistry.getExtensionPoint(ServletHostExtensionPoint.class);
+
+ BuilderRegistry builderRegistry = extensionPointRegistry.getExtensionPoint(BuilderRegistry.class);
Axis2BindingBuilder builder = new Axis2BindingBuilder();
builder.setBuilderRegistry(builderRegistry);
+ builder.setServletHost(servletHost);
builder.init();
+
}
public void stop(ExtensionPointRegistry registry) {
Modified: incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ServiceBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ServiceBinding.java?view=diff&rev=529090&r1=529089&r2=529090
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ServiceBinding.java (original)
+++ incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ServiceBinding.java Sun Apr 15 16:08:06 2007
@@ -50,6 +50,7 @@
import org.apache.axis2.wsdl.WSDLConstants.WSDL20_2004Constants;
import org.apache.tuscany.binding.axis2.util.WebServicePortMetaData;
import org.apache.tuscany.binding.ws.WebServiceBinding;
+import org.apache.tuscany.http.ServletHostExtensionPoint;
import org.apache.tuscany.interfacedef.InterfaceContract;
import org.apache.tuscany.interfacedef.Operation;
import org.apache.tuscany.interfacedef.Operation.ConversationSequence;
@@ -57,8 +58,8 @@
import org.apache.tuscany.spi.builder.BuilderConfigException;
import org.apache.tuscany.spi.component.TargetInvokerCreationException;
import org.apache.tuscany.spi.component.WorkContext;
+import org.apache.tuscany.spi.component.WorkContextTunnel;
import org.apache.tuscany.spi.extension.ServiceBindingExtension;
-import org.apache.tuscany.spi.host.ServletHost;
import org.apache.tuscany.spi.wire.Interceptor;
import org.apache.tuscany.spi.wire.InvocationChain;
import org.apache.tuscany.spi.wire.Message;
@@ -66,36 +67,27 @@
import org.apache.tuscany.spi.wire.TargetInvoker;
import org.osoa.sca.annotations.Destroy;
-// org.apache.tuscany.spi.model
/**
* An implementation of a {@link ServiceBindingExtension} configured with the Axis2 binding
- *
- * @version $Rev$ $Date$
*/
public class Axis2ServiceBinding extends ServiceBindingExtension {
- private static final QName BINDING_WS = new QName(SCA_NS, "binding.ws");
private InterfaceContract serviceContract;
-
- private ServletHost servletHost;
-
private ConfigurationContext configContext;
-
- private WebServiceBinding binding;
-
+ private WebServiceBinding wsBinding;
private Map<Object, InvocationContext> invCtxMap = new HashMap<Object, InvocationContext>();
-
private String serviceName;
-
- private WorkContext workContext;
-
+// private WorkContext workContext;
private Set<String> seenConversations = Collections.synchronizedSet(new HashSet<String>());
+ private ServletHostExtensionPoint servletHost;
+
+ private static final QName BINDING_WS = new QName(SCA_NS, "binding.ws");
public Axis2ServiceBinding(URI uri,
InterfaceContract serviceContract,
InterfaceContract serviceBindingContract,
- WebServiceBinding binding,
- ServletHost servletHost,
+ WebServiceBinding wsBinding,
+ ServletHostExtensionPoint servletHost,
ConfigurationContext configContext,
WorkContext workContext) {
@@ -103,18 +95,20 @@
this.serviceContract = serviceContract;
this.bindingServiceContract = serviceBindingContract;
- this.binding = binding;
+ this.wsBinding = wsBinding;
this.servletHost = servletHost;
this.configContext = configContext;
this.serviceName = uri.toString(); // TODO: whats this for, better name
- this.workContext = workContext;
+// this.workContext = workContext;
+
+ start(); // TODO: hack while start isn't getting called by runtime
}
public void start() {
super.start();
try {
- configContext.getAxisConfiguration().addService(createAxisService(binding));
+ configContext.getAxisConfiguration().addService(createAxisService(wsBinding));
} catch (AxisFault e) {
throw new Axis2BindingRunTimeException(e);
}
@@ -122,12 +116,12 @@
Axis2ServiceServlet servlet = new Axis2ServiceServlet();
servlet.init(configContext);
configContext.setContextRoot(getUri().toString());
- servletHost.registerMapping("/services/" + getUri().toString(), servlet);
+ servletHost.addServletMapping(8080, getUri().getPath(), servlet);
}
@Destroy
public void stop() {
- servletHost.unregisterMapping("/services/" + getUri().toString());
+ servletHost.removeServletMapping(8080, getUri().getPath());
try {
configContext.getAxisConfiguration().removeService(getUri().toString());
} catch (AxisFault e) {
@@ -148,7 +142,11 @@
builder.setServerSide(true);
AxisService axisService = builder.populateService();
- axisService.setName(getUri().toString());
+ String path = getUri().getPath();
+ if (path != null && path.length() > 1 && path.startsWith("/")) {
+ path = path.substring(1);
+ }
+ axisService.setName(path);
axisService.setServiceDescription("Tuscany configured AxisService for service: " + getUri().toString());
// Use the existing WSDL
@@ -209,6 +207,7 @@
}
Interceptor headInterceptor = chain.getHeadInterceptor();
+ WorkContext workContext = WorkContextTunnel.getThreadWorkContext();
String oldConversationID = (String) workContext.getIdentifier(Scope.CONVERSATION);
if (isConversational() && conversationID != null) {
workContext.setIdentifier(Scope.CONVERSATION, conversationID);
@@ -232,6 +231,8 @@
msg.setMessageId(messageId);
}
msg.setBody(args);
+ msg.setWorkContext(workContext);
+
Message resp;
if (isConversational()) {
Modified: incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ServiceInOutSyncMessageReceiver.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ServiceInOutSyncMessageReceiver.java?view=diff&rev=529090&r1=529089&r2=529090
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ServiceInOutSyncMessageReceiver.java (original)
+++ incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ServiceInOutSyncMessageReceiver.java Sun Apr 15 16:08:06 2007
@@ -49,9 +49,8 @@
String conversationID = axis2Service.isConversational() ? Axis2ServiceBinding.getConversationID(inMC) : null;
- OMElement responseOM = null; //(OMElement)axis2Service.invokeTarget(operation, args, null, conversationID);
+ OMElement responseOM = (OMElement) axis2Service.invokeTarget(operation, args, null, conversationID);
-
SOAPEnvelope soapEnvelope = getSOAPFactory(inMC).getDefaultEnvelope();
if(null != responseOM ){
soapEnvelope.getBody().addChild(responseOM);
Modified: incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ServiceServlet.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ServiceServlet.java?view=diff&rev=529090&r1=529089&r2=529090
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ServiceServlet.java (original)
+++ incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2ServiceServlet.java Sun Apr 15 16:08:06 2007
@@ -18,6 +18,8 @@
*/
package org.apache.tuscany.binding.axis2;
+import static org.apache.tuscany.host.embedded.SimpleRuntimeInfo.DEFAULT_COMPOSITE;
+
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
@@ -37,6 +39,10 @@
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.transport.http.AxisServlet;
+import org.apache.tuscany.core.component.SimpleWorkContext;
+import org.apache.tuscany.spi.Scope;
+import org.apache.tuscany.spi.component.WorkContext;
+import org.apache.tuscany.spi.component.WorkContextTunnel;
/**
* This overrides the servlet init of the AxisServlet so Tuscany can use
@@ -201,6 +207,12 @@
inited = true;
}
}
+
+ // Create a work context TODO: where should this get done?
+ WorkContext workContext = new SimpleWorkContext();
+ workContext.setIdentifier(Scope.COMPOSITE, DEFAULT_COMPOSITE);
+ WorkContextTunnel.setThreadWorkContext(workContext);
+
super.service(request, response);
}
Modified: incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/TuscanyDispatcher.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/TuscanyDispatcher.java?view=diff&rev=529090&r1=529089&r2=529090
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/TuscanyDispatcher.java (original)
+++ incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/binding/axis2/TuscanyDispatcher.java Sun Apr 15 16:08:06 2007
@@ -57,7 +57,7 @@
String path = URI.create(toEPR.getAddress()).getPath();
- // remove the leading slash
+ // remove the leading slash as Axis2 doesn't work if the service name starts with one
if (path != null && path.length() > 1 && path.startsWith("/")) {
path = path.substring(1);
}
Modified: incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/resources/org/apache/tuscany/binding/axis2/engine/config/axis2.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/resources/org/apache/tuscany/binding/axis2/engine/config/axis2.xml?view=diff&rev=529090&r1=529089&r2=529090
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/resources/org/apache/tuscany/binding/axis2/engine/config/axis2.xml (original)
+++ incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/resources/org/apache/tuscany/binding/axis2/engine/config/axis2.xml Sun Apr 15 16:08:06 2007
@@ -66,7 +66,7 @@
<!--parameters help to tweak the message handling of two main servlets. -->
<!-- If the enableRESTInAxis2MainServlet is true, then Axis2MainServlet will handle both SOAP and REST messages -->
- <parameter name="enableRESTInAxis2MainServlet" locked="true">false</parameter>
+ <parameter name="enableRESTInAxis2MainServlet" locked="true">true</parameter>
<!-- Following parameter will completely disable REST handling in both the servlets-->
<parameter name="disableREST" locked="true">false</parameter>
@@ -223,6 +223,10 @@
<phaseOrder type="InFlow">
<!-- System pre defined phases -->
<phase name="Transport">
+ <handler name="TuscanyDispatcher"
+ class="org.apache.tuscany.binding.axis2.TuscanyDispatcher">
+ <order phase="Transport"/>
+ </handler>
<handler name="RequestURIBasedDispatcher"
class="org.apache.axis2.engine.RequestURIBasedDispatcher">
<order phase="Transport"/>
Added: incubator/tuscany/java/sca/modules/binding-ws-axis2/src/test/java/org/apache/tuscany/binding/axis2/itests/HelloWorldService.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/test/java/org/apache/tuscany/binding/axis2/itests/HelloWorldService.java?view=auto&rev=529090
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-axis2/src/test/java/org/apache/tuscany/binding/axis2/itests/HelloWorldService.java (added)
+++ incubator/tuscany/java/sca/modules/binding-ws-axis2/src/test/java/org/apache/tuscany/binding/axis2/itests/HelloWorldService.java Sun Apr 15 16:08:06 2007
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.tuscany.binding.axis2.itests;
+
+public class HelloWorldService implements HelloWorld {
+
+ public String getGreetings(String s) {
+ return "Hello " + s;
+ }
+
+}
Propchange: incubator/tuscany/java/sca/modules/binding-ws-axis2/src/test/java/org/apache/tuscany/binding/axis2/itests/HelloWorldService.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/modules/binding-ws-axis2/src/test/java/org/apache/tuscany/binding/axis2/itests/HelloWorldService.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: incubator/tuscany/java/sca/modules/binding-ws-axis2/src/test/resources/org/apache/tuscany/binding/axis2/itests/HelloWorld.composite
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/test/resources/org/apache/tuscany/binding/axis2/itests/HelloWorld.composite?view=diff&rev=529090&r1=529089&r2=529090
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-axis2/src/test/resources/org/apache/tuscany/binding/axis2/itests/HelloWorld.composite (original)
+++ incubator/tuscany/java/sca/modules/binding-ws-axis2/src/test/resources/org/apache/tuscany/binding/axis2/itests/HelloWorld.composite Sun Apr 15 16:08:06 2007
@@ -21,6 +21,16 @@
name="HelloWorld">
+ <service name="helloWorld" promote="HelloWorldService">
+ <interface.wsdl interface="http://helloworld#wsdl.interface(HelloWorld)" />
+ <!-- interface.java interface="org.apache.tuscany.binding.axis2.itests.HelloWorld" / -->
+ <binding.ws wsdlElement="http://helloworld#wsdl.port(HelloWorldService/HelloWorldSoapPort)"/>
+ </service>
+
+ <component name="HelloWorldService">
+ <implementation.java class="org.apache.tuscany.binding.axis2.itests.HelloWorldService"/>
+ </component>
+
<component name="HelloWorldComponent">
<implementation.java class="org.apache.tuscany.binding.axis2.itests.HelloWorldComponent"/>
<reference name="helloWorldWS" />
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org