/*
* Copyright 2001-2004 The Apache Software Foundation.
*
* Licensed 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 samples.transport.tcp;
import org.apache.axis.AxisEngine;
import org.apache.axis.MessageContext;
import org.apache.axis.client.Call;
import org.apache.axis.client.Transport;
import org.apache.axis.components.logger.LogFactory;
import org.apache.commons.logging.Log;
import java.net.URL;
/**
*
* @author Rob Jellinghaus (robj@unrealities.com)
* @author Doug Davis (dug@us.ibm.com)
* @author Glen Daniels (gdaniels@allaire.com)
*/
public class TCPTransport extends Transport
{
static Log log =
LogFactory.getLog(TCPTransport.class.getName());
private String host;
private String port;
public TCPTransport () {
transportName = "tcp";
}
public TCPTransport (String host, String port) {
transportName = "tcp";
this.host = host;
this.port = port;
}
/**
* TCP properties
*/
static public String HOST = "tcp.host";
static public String PORT = "tcp.port";
/**
* Set up any transport-specific derived properties in the message context.
* @param context the context to set up
* @param message the client service instance
* @param engine the engine containing the registries
*/
public void setupMessageContextImpl(MessageContext mc,
Call call,
AxisEngine engine)
{
try {
String urlString = mc.getStrProp(MessageContext.TRANS_URL);
if (urlString != null) {
URL url = new URL(urlString);
host = url.getHost();
port = new Integer(url.getPort()).toString();
}
} catch (java.net.MalformedURLException e) {
// Do nothing here?
}
if (host != null) mc.setProperty(HOST, host);
if (port != null) mc.setProperty(PORT, port);
log.debug( "Port = " + mc.getStrProp(PORT));
log.debug( "Host = " + mc.getStrProp(HOST));
// kind of ugly... fake up a "http://host:port/" url to send down the chain
// ROBJ TODO: clean this up so we use TCP transport properties all the way down
// use serviceclient properties if any, otherwise use ours
/*
String url = "http://"+serv.get(HOST)+":"+serv.get(PORT);
log.debug( "TCPTransport set URL to '" + url + "'");
mc.setProperty(MessageContext.TRANS_URL, url);
*/
}
}
|