You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by di...@apache.org on 2007/07/23 07:18:15 UTC
svn commit: r558602 - in /webservices/axis2/branches/java/1_3/modules:
kernel/src/org/apache/axis2/description/
kernel/src/org/apache/axis2/transport/http/
kernel/src/org/apache/axis2/transport/nhttp/
kernel/src/org/apache/axis2/util/ saaj/src/org/apac...
Author: dims
Date: Sun Jul 22 22:18:14 2007
New Revision: 558602
URL: http://svn.apache.org/viewvc?view=rev&rev=558602
Log:
Checking in the following changes from trunk.
558220 gawor 2007-07-21 01:21:46 +0000
respect character encoding, chain exceptions, and handle null prefix
558240 dims 2007-07-21 04:37:02 +0000
Handle the case when we start axis servlet with both http and https on in tomcat's conf/server.xml (say 5050 for http and 5443 for https) and the user types in the url for dynamic wsdl - https://localhost:5443/axis2/services/Version?wsdl in the browser. W/O this patch we were returning just one wsdl:port and that too pointing to http://localhost:8080/
558256 dims 2007-07-21 06:28:53 +0000
- Use the host http header for simple axis server if it is present
- Drop the extra slash for https (was generating http://localhost:8443//axis2/services/Version, now will generate http://localhost:8443/axis2/services/Version)
558262 dims 2007-07-21 07:00:46 +0000
- Get WSDL2.0 generator to honot the host http header
558374 ruchithf 2007-07-21 19:40:31 +0000
These samples are now in Apache Rampart
Removed:
webservices/axis2/branches/java/1_3/modules/samples/security/
Modified:
webservices/axis2/branches/java/1_3/modules/kernel/src/org/apache/axis2/description/AxisService.java
webservices/axis2/branches/java/1_3/modules/kernel/src/org/apache/axis2/description/AxisService2WSDL20.java
webservices/axis2/branches/java/1_3/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java
webservices/axis2/branches/java/1_3/modules/kernel/src/org/apache/axis2/transport/http/HTTPWorker.java
webservices/axis2/branches/java/1_3/modules/kernel/src/org/apache/axis2/transport/http/ListingAgent.java
webservices/axis2/branches/java/1_3/modules/kernel/src/org/apache/axis2/transport/nhttp/ServerWorker.java
webservices/axis2/branches/java/1_3/modules/kernel/src/org/apache/axis2/util/WSDLSerializationUtil.java
webservices/axis2/branches/java/1_3/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyImpl.java
webservices/axis2/branches/java/1_3/modules/saaj/src/org/apache/axis2/saaj/SOAPConnectionImpl.java
Modified: webservices/axis2/branches/java/1_3/modules/kernel/src/org/apache/axis2/description/AxisService.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_3/modules/kernel/src/org/apache/axis2/description/AxisService.java?view=diff&rev=558602&r1=558601&r2=558602
==============================================================================
--- webservices/axis2/branches/java/1_3/modules/kernel/src/org/apache/axis2/description/AxisService.java (original)
+++ webservices/axis2/branches/java/1_3/modules/kernel/src/org/apache/axis2/description/AxisService.java Sun Jul 22 22:18:14 2007
@@ -1146,10 +1146,22 @@
}
}
- //WSDL 2.0
+ /**
+ * Print the WSDL2.0 with a default URL. This will be called only during codegen time.
+ *
+ * @param out
+ * @throws AxisFault
+ */
public void printWSDL2(OutputStream out) throws AxisFault {
+ printWSDL2(out, null);
+ }
+
+ public void printWSDL2(OutputStream out, String requestIP) throws AxisFault {
AxisService2WSDL20 axisService2WSDL2 = new AxisService2WSDL20(this);
try {
+ if(requestIP != null) {
+ axisService2WSDL2.setEPRs(calculateEPRs(requestIP));
+ }
OMElement wsdlElement = axisService2WSDL2.generateOM();
wsdlElement.serialize(out);
out.flush();
Modified: webservices/axis2/branches/java/1_3/modules/kernel/src/org/apache/axis2/description/AxisService2WSDL20.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_3/modules/kernel/src/org/apache/axis2/description/AxisService2WSDL20.java?view=diff&rev=558602&r1=558601&r2=558602
==============================================================================
--- webservices/axis2/branches/java/1_3/modules/kernel/src/org/apache/axis2/description/AxisService2WSDL20.java (original)
+++ webservices/axis2/branches/java/1_3/modules/kernel/src/org/apache/axis2/description/AxisService2WSDL20.java Sun Jul 22 22:18:14 2007
@@ -48,6 +48,7 @@
public class AxisService2WSDL20 implements WSDL2Constants {
private AxisService axisService;
+ private String[] eprs = null;
public AxisService2WSDL20(AxisService service) {
this.axisService = service;
@@ -268,7 +269,7 @@
}
descriptionElement
.addChild(WSDLSerializationUtil.generateServiceElement(omFactory, wsdl, tns,
- axisService, disableREST));
+ axisService, disableREST, eprs));
}
return descriptionElement;
@@ -428,5 +429,9 @@
}
}
return axisOperationElement;
+ }
+
+ public void setEPRs(String[] eprs) {
+ this.eprs = eprs;
}
}
Modified: webservices/axis2/branches/java/1_3/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_3/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java?view=diff&rev=558602&r1=558601&r2=558602
==============================================================================
--- webservices/axis2/branches/java/1_3/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java (original)
+++ webservices/axis2/branches/java/1_3/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java Sun Jul 22 22:18:14 2007
@@ -221,6 +221,7 @@
query.indexOf("wsdl") >= 0 || query.indexOf("xsd") >= 0 ||
query.indexOf("policy") >= 0)) {
// handling meta data exchange stuff
+ agent.initTransportListener(request);
agent.processListService(request, response);
} else if (requestURI.endsWith(".xsd") ||
requestURI.endsWith(".wsdl")) {
Modified: webservices/axis2/branches/java/1_3/modules/kernel/src/org/apache/axis2/transport/http/HTTPWorker.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_3/modules/kernel/src/org/apache/axis2/transport/http/HTTPWorker.java?view=diff&rev=558602&r1=558601&r2=558602
==============================================================================
--- webservices/axis2/branches/java/1_3/modules/kernel/src/org/apache/axis2/transport/http/HTTPWorker.java (original)
+++ webservices/axis2/branches/java/1_3/modules/kernel/src/org/apache/axis2/transport/http/HTTPWorker.java Sun Jul 22 22:18:14 2007
@@ -131,7 +131,7 @@
if (service != null) {
response.setStatus(HttpStatus.SC_OK);
response.setContentType("text/xml");
- service.printWSDL2(response.getOutputStream());
+ service.printWSDL2(response.getOutputStream(), getHost(request));
return;
}
}
@@ -142,7 +142,7 @@
if (service != null) {
response.setStatus(HttpStatus.SC_OK);
response.setContentType("text/xml");
- service.printWSDL(response.getOutputStream());
+ service.printWSDL(response.getOutputStream(), getHost(request));
return;
}
}
@@ -329,17 +329,16 @@
}
- public String getHostAddress(AxisHttpRequest request) throws java.net.SocketException {
- try {
- Header hostHeader = request.getFirstHeader("host");
- if (hostHeader != null) {
- String host = hostHeader.getValue();
- return new URI("http://" + host).getHost();
+ public String getHost(AxisHttpRequest request) throws java.net.SocketException {
+ String host = null;
+ Header hostHeader = request.getFirstHeader("host");
+ if (hostHeader != null) {
+ String parts[] = hostHeader.getValue().split("[:]");
+ if (parts.length > 0) {
+ host = parts[0].trim();
}
- } catch (Exception e) {
-
}
- return HttpUtils.getIpAddress();
+ return host;
}
}
Modified: webservices/axis2/branches/java/1_3/modules/kernel/src/org/apache/axis2/transport/http/ListingAgent.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_3/modules/kernel/src/org/apache/axis2/transport/http/ListingAgent.java?view=diff&rev=558602&r1=558601&r2=558602
==============================================================================
--- webservices/axis2/branches/java/1_3/modules/kernel/src/org/apache/axis2/transport/http/ListingAgent.java (original)
+++ webservices/axis2/branches/java/1_3/modules/kernel/src/org/apache/axis2/transport/http/ListingAgent.java Sun Jul 22 22:18:14 2007
@@ -37,6 +37,8 @@
import org.apache.neethi.Policy;
import org.apache.neethi.PolicyRegistry;
import org.apache.ws.commons.schema.XmlSchema;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
@@ -53,6 +55,8 @@
public class ListingAgent extends AbstractAgent {
+ private static final Log log = LogFactory.getLog(ListingAgent.class);
+
private static final String LIST_MULTIPLE_SERVICE_JSP_NAME =
"listServices.jsp";
private static final String LIST_SINGLE_SERVICE_JSP_NAME =
@@ -84,6 +88,23 @@
public void handle(HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse)
throws IOException, ServletException {
+
+ initTransportListener(httpServletRequest);
+
+ String query = httpServletRequest.getQueryString();
+ if (query != null) {
+ if (query.indexOf("wsdl2") > 0 || query.indexOf("wsdl") > 0 ||
+ query.indexOf("xsd") > 0 || query.indexOf("policy") > 0) {
+ processListService(httpServletRequest, httpServletResponse);
+ } else {
+ super.handle(httpServletRequest, httpServletResponse);
+ }
+ } else {
+ super.handle(httpServletRequest, httpServletResponse);
+ }
+ }
+
+ protected void initTransportListener(HttpServletRequest httpServletRequest) {
// httpServletRequest.getLocalPort() , giving me a build error so I had to use the followin
String filePart = httpServletRequest.getRequestURL().toString();
int ipindex = filePart.indexOf("//");
@@ -97,19 +118,8 @@
try {
addTransportListner(httpServletRequest.getScheme(), Integer.parseInt(portstr));
} catch (NumberFormatException e) {
- //
- }
- }
- String query = httpServletRequest.getQueryString();
- if (query != null) {
- if (query.indexOf("?wsdl2") > 0 || query.indexOf("?wsdl") > 0 ||
- query.indexOf("?xsd") > 0) {
- processListService(httpServletRequest, httpServletResponse);
- } else {
- super.handle(httpServletRequest, httpServletResponse);
+ log.debug(e.toString(), e);
}
- } else {
- super.handle(httpServletRequest, httpServletResponse);
}
}
@@ -211,6 +221,7 @@
if (wsdl2 >= 0) {
OutputStream out = res.getOutputStream();
res.setContentType("text/xml");
+ String ip = extractHostAndPort(filePart, isHttp);
String wsdlName = req.getParameter("wsdl2");
if (!"".equals(wsdlName)) {
InputStream in = ((AxisService) serviceObj).getClassLoader()
@@ -224,7 +235,7 @@
}
} else {
((AxisService) serviceObj)
- .printWSDL2(out);
+ .printWSDL2(out, ip);
out.flush();
out.close();
}
@@ -477,9 +488,11 @@
public EndpointReference[] getEPRsForService(String serviceName, String ip)
throws AxisFault {
- return new EndpointReference[]{new EndpointReference(schema + "://" + ip + ":" + port +
- "/" + axisConf.getServiceContextPath() + "/" +
- serviceName)}; //To change body of implemented methods use File | Settings | File Templates.
+ String path = axisConf.getServiceContextPath() + "/" + serviceName;
+ if(path.charAt(0)!='/'){
+ path = '/' + path;
+ }
+ return new EndpointReference[]{new EndpointReference(schema + "://" + ip + ":" + port + path )};
}
public EndpointReference getEPRForService(String serviceName, String ip) throws AxisFault {
Modified: webservices/axis2/branches/java/1_3/modules/kernel/src/org/apache/axis2/transport/nhttp/ServerWorker.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_3/modules/kernel/src/org/apache/axis2/transport/nhttp/ServerWorker.java?view=diff&rev=558602&r1=558601&r2=558602
==============================================================================
--- webservices/axis2/branches/java/1_3/modules/kernel/src/org/apache/axis2/transport/nhttp/ServerWorker.java (original)
+++ webservices/axis2/branches/java/1_3/modules/kernel/src/org/apache/axis2/transport/nhttp/ServerWorker.java Sun Jul 22 22:18:14 2007
@@ -296,9 +296,11 @@
try {
response.addHeader(CONTENT_TYPE, TEXT_XML);
serverHandler.commitResponse(conn, response);
- service.printWSDL2(os);
-
+ service.printWSDL2(os, getIpAddress());
} catch (AxisFault e) {
+ handleException("Axis2 fault writing ?wsdl2 output", e);
+ return;
+ } catch (SocketException e) {
handleException("Axis2 fault writing ?wsdl2 output", e);
return;
}
Modified: webservices/axis2/branches/java/1_3/modules/kernel/src/org/apache/axis2/util/WSDLSerializationUtil.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_3/modules/kernel/src/org/apache/axis2/util/WSDLSerializationUtil.java?view=diff&rev=558602&r1=558601&r2=558602
==============================================================================
--- webservices/axis2/branches/java/1_3/modules/kernel/src/org/apache/axis2/util/WSDLSerializationUtil.java (original)
+++ webservices/axis2/branches/java/1_3/modules/kernel/src/org/apache/axis2/util/WSDLSerializationUtil.java Sun Jul 22 22:18:14 2007
@@ -282,9 +282,28 @@
OMNamespace tns, AxisService axisService,
boolean disableREST)
throws AxisFault {
- String[] eprs = axisService.getEPRs();
- if (eprs == null) {
- eprs = new String[]{axisService.getName()};
+ return generateServiceElement(omFactory, wsdl, tns, axisService, disableREST, null);
+ }
+
+ /**
+ * Generates a default service element
+ * @param omFactory - The OMFactory
+ * @param wsdl the WSDL namespace
+ * @param tns - The targetnamespace
+ * @param axisService - The AxisService
+ * @param disableREST only generate REST endpoint if this is false
+ * @return - The generated service element
+ * @throws AxisFault - Thrown in case an exception occurs
+ */
+ public static OMElement generateServiceElement(OMFactory omFactory, OMNamespace wsdl,
+ OMNamespace tns, AxisService axisService,
+ boolean disableREST, String[] eprs)
+ throws AxisFault {
+ if(eprs == null){
+ eprs = axisService.getEPRs();
+ if (eprs == null) {
+ eprs = new String[]{axisService.getName()};
+ }
}
OMElement serviceElement;
serviceElement = omFactory.createOMElement(WSDL2Constants.SERVICE_LOCAL_NAME, wsdl);
Modified: webservices/axis2/branches/java/1_3/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_3/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyImpl.java?view=diff&rev=558602&r1=558601&r2=558602
==============================================================================
--- webservices/axis2/branches/java/1_3/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyImpl.java (original)
+++ webservices/axis2/branches/java/1_3/modules/saaj/src/org/apache/axis2/saaj/SOAPBodyImpl.java Sun Jul 22 22:18:14 2007
@@ -148,6 +148,10 @@
if (uri == null || "".equals(uri)) {
childEle = new SOAPBodyElementImpl(
(ElementImpl)getOwnerDocument().createElement(localName));
+ } else if (prefix == null || "".equals(prefix)) {
+ childEle = new SOAPBodyElementImpl(
+ (ElementImpl)getOwnerDocument().createElementNS(uri,
+ localName));
} else {
childEle = new SOAPBodyElementImpl(
(ElementImpl)getOwnerDocument().createElementNS(uri,
Modified: webservices/axis2/branches/java/1_3/modules/saaj/src/org/apache/axis2/saaj/SOAPConnectionImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_3/modules/saaj/src/org/apache/axis2/saaj/SOAPConnectionImpl.java?view=diff&rev=558602&r1=558601&r2=558602
==============================================================================
--- webservices/axis2/branches/java/1_3/modules/saaj/src/org/apache/axis2/saaj/SOAPConnectionImpl.java (original)
+++ webservices/axis2/branches/java/1_3/modules/saaj/src/org/apache/axis2/saaj/SOAPConnectionImpl.java Sun Jul 22 22:18:14 2007
@@ -115,6 +115,10 @@
} catch (AxisFault e) {
throw new SOAPException(e);
}
+
+ options.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING,
+ request.getProperty(SOAPMessage.CHARACTER_SET_ENCODING));
+
opClient.setOptions(options);
if (request.countAttachments() != 0) { // SOAPMessage with attachments
@@ -185,8 +189,8 @@
MessageContext msgCtx =
opClient.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
return getSOAPMessage(msgCtx.getEnvelope());
- } catch (AxisFault e) {
- throw new SOAPException(e.getMessage());
+ } catch (Exception e) {
+ throw new SOAPException(e.getMessage(), e);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org