# SOAP: Url Rewrite?!



## tuxedo (10. Dez 2009)

Hallo,

hab hier ein kleines Problem:

Ich habe eine VisualBasic Client/Server Anwendung die mit SOAP arbeitet. 

Dieser Client benutzt eine URL in folgendem Schema:


```
http://meinserver/MyApplicationApi/infrastructure?WSDL
```

Die VB Client/Server Anwendung ist nun etwas veraltet. Ein neues System wurder auf Basis von Java und JBoss entwickelt. 

Das SOAP API der alten VB Client/Server Anwendung soll nun auf das JBoss-System konvertiert werden. 
Intern klappt das mit dem Mapping der alten Funktioen auf die neuen schon recht gut.

Problem ist jetzt nur noch:

Die URL hat in JBoss ein anderes Schema:


```
http://meinserver/MyApplicationApi/infrastructure.wsdl
```

Die Frage ist jetzt: Wie bringt ich JBoss bei, dass die URl nicht mit ".wsdl" sondern mit "?WSDL" endet ...

Muss dazu sagen dass ich kein SOAP-Experte bin und auch nicht der bin der das Ding gebastelt hat. Viel Hintergrund wissen über SOAP hab ich also nicht. 

Wäre nett wenn jemand nen Tipp geben könnte wo man was drehen muss damit das hinhaut, damit ich das weiterleiten kann...

Wenns da nix zum "drehen" gibt:

Wie steht es mit einem extra Servlet das "die richtige URL" hat und alle Requests einfach entsprechend weiterleitet, die Antwort liest und dem ersten Request entsprechend antwortet?

Gruß
Alex

P.S. Kann sein dass ich das mit ".wsdl" und "?WSDL" verdreht hab. Nichts desto trotz bleibt die Frage wie man die Endung ändern kann...
P.P.S. Ich muss auch noch dazu sagen, dass ich die URL im VB-Client nicht ändern kann. Das Format ist Teil einer Spezifikation und muss so bleiben.


----------



## fastjack (10. Dez 2009)

Wenn ich mich nicht irre, kannst Du in der web.xml MIME-Typen angeben :

[XML] <!-- currently the W3C havent settled on a media type for WSDL;
Web Services Description Language (WSDL) Version 1.2
    for now we go with the basic 'it's XML' response -->
    <mime-mapping>
        <extension>wsdl</extension>
        <mime-type>text/xml</mime-type>
    </mime-mapping>
    <mime-mapping>
        <extension>xsd</extension>
        <mime-type>text/xml</mime-type>
    </mime-mapping>
[/XML]

und schau Dir mal die server-config.wsdd an :

[XML]<transport name="http">
  <requestFlow>
   <handler type="URLMapper"/>
   <handler type="javarg.apache.axis.handlers.http.HTTPAuthHandler"/>
  </requestFlow>
  <parameter name="qs:list" value="org.apache.axis.transport.http.QSListHandler"/>
  <parameter name="qs:wsdl" value="org.apache.axis.transport.http.QSWSDLHandler"/>
  <parameter name="qs:method" value="org.apache.axis.transport.http.QSMethodHandler"/>
 </transport>
 <transport name="local">
  <responseFlow>
   <handler type="LocalResponder"/>
  </responseFlow>
 </transport>
[/XML]

aber wie gesagt, ich bin mir net ganz sicher jetzt. :rtfm:


----------



## tuxedo (10. Dez 2009)

Was haben denn MIME Typen mit dem Format einer URL zu tun?

Zur server-config.wsdd: Kenn mich da ja nicht so aus. Aber das sieht so aus als ob das eine serverweite Einstellung wäre. Ich möchte die geänderte URL aber nur für diesen einen Teil ...

- Alex


----------



## Noctarius (10. Dez 2009)

Mit vorgeschaltetem Apache und mod_rewrite?


```
RewriteEngine on
    RewriteRule ^(.*)\?WSDL$ $1.wsdl [L,R]
```


----------



## tuxedo (10. Dez 2009)

Ja, das wäre auch mein Ansatz gewesen. Aber Apache steht leider nicht zur Debatte. 

Entweder JBoss beibringen die URL anders zu formen, oder eine Art Proxy-Servlet das die passende URl anbietet und entsprechend weiterleitet.

- Alex


----------



## Noctarius (10. Dez 2009)

UrlRewriteFilter - Rewrite URL's in Java Web Application Servers <- Servlet Filter?

Alternativ Google-Lösung:
http://www.jboss.org/file-access/default/members/jbossweb/freezone/modules/rewrite/index.html


----------



## tuxedo (10. Dez 2009)

Das mit dem UrlRewrite via Valve hat nicht funktioniert. Logoutput hab ich auch irgendwie keinen dazu bekommen.

Habens jetzt erstmal über ein ProxyServlet gelöst. Das mit dem UrlRewrite werden wir aber nochmal genauer unter die Lupe nehmen. Wäre halt irgendwie schicker und flexibler 

danke mal soweit.


- Alex


----------

