[jboss-user] [JBossWS] - Error 401 and server redirection
tremalnaik
do-not-reply at jboss.com
Fri May 18 06:27:37 EDT 2007
Hello, I have a problem with my Jax-Rpc style WS: A client is accessing a remote server using the following code:
// setting up the authenticator (BasicAuthenticator extends java.net.Authenticator)
| BasicAuthenticator ba = new BasicAuthenticator(username, password);
| Authenticator.setDefault(ba);
| // setting a relaxed host verifier (to avoid too strict the server name checking)
| HttpsURLConnection.setDefaultHostnameVerifier(new NiceVerifier());
| // get service
| String urlstr = "https://cor319.cor-fs.com:8443/bitatraveller/TravellerSynchronizer";
| URL url = new URL(urlstr);
| String ns = "https://ws.web.bitastar.bitaplus.com/";
| QName qname = new QName(ns, "TravellerSynchronizer");
| QName port = new QName(ns, "TravellerSynchronizerIfacePort");
| QName operation = new QName(ns, "synchronize");
| ServiceFactoryImpl sfi = new ServiceFactoryImpl();
| // read mapping file
| File mapping = new File("mapping.xml");
| Service service = sfi.createService(url, qname, mapping.toURL());
| // call service
| Call call = service.createCall(port, operation);
| ClientCharacteristics cc = (ClientCharacteristics) call.invoke(new Object[] { characters });
I receive the error 401 and the client keep going on trying many times. Tomcat Axis Tcpmon gives the following output:
GET /bitatraveller/TravellerSynchronizer?wsdl HTTP/1.1
| User-Agent: Java/1.5.0_09
| Host: 127.0.0.1:9999
| Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
| Connection: keep-alive
| Content-type: application/x-www-form-urlencoded
|
| HTTP/1.1 401 Unauthorized
| Server: Apache-Coyote/1.1
| Pragma: No-cache
| Cache-Control: no-cache
| Expires: Thu, 01 Jan 1970 01:00:00 GMT
| WWW-Authenticate: Basic realm="127.0.0.1:9999"
| Content-Type: text/html;charset=utf-8
| Content-Length: 952
| Date: Fri, 18 May 2007 09:45:39 GMT
|
| <html><head><title>Apache Tomcat/5.5.9 - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 401 - </h1><HR size="1" noshade="noshade"><p><b>type</b> Status report</p><p><b>message</b> <u></u></p><p><b>description</b> <u>This request requires HTTP authentication ().</u></p><HR size="1" noshade="noshade"><h3>Apache Tomcat/5.5.9</h3></body></html>
Well, everything is working fine, except when the password issued by the client is wrong.
All I see in my application output, after 20 repetitions of the above request/response:
2007-05-18 10:06:43,878 [http-8443-Processor23] ERROR [ROM] [_system_] com.bitaplus.bitastar.common.exception.InvalidPasswordException: Invalid password or username.
| at com.bitaplus.bitastar.traveller.util.FileUserHelper.validateLogin(FileUserHelper.java:73)
| at com.bitaplus.bitastar.traveller.security.auth.tomcat.TomcatXmlDbLoginModule.validate(TomcatXmlDbLoginModule.java:27)
| at com.bitaplus.bitastar.common.security.auth.tomcat.TomcatLoginModule.login(TomcatLoginModule.java:122)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
| at java.lang.reflect.Method.invoke(Unknown Source)
| at javax.security.auth.login.LoginContext.invoke(Unknown Source)
| at javax.security.auth.login.LoginContext.access$000(Unknown Source)
| at javax.security.auth.login.LoginContext$4.run(Unknown Source)
| at java.security.AccessController.doPrivileged(Native Method)
| at javax.security.auth.login.LoginContext.invokePriv(Unknown Source)
| at javax.security.auth.login.LoginContext.login(Unknown Source)
| at org.apache.catalina.realm.JAASRealm.authenticate(JAASRealm.java:365)
| at org.apache.catalina.authenticator.FormAuthenticator.authenticate(FormAuthenticator.java:257)
| at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:416)
| at com.bitaplus.bitastar.web.valve.TomcatFixValve.invoke(TomcatFixValve.java:181)
| at com.bitaplus.bitastar.web.valve.LicenseRequirementsValve.invoke(LicenseRequirementsValve.java:408)
| at com.bitaplus.bitastar.web.valve.LoginErrorMessageValve.invoke(LoginErrorMessageValve.java:35)
| at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
| at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
| at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
| at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
| at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
| at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
| at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
| at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
| at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
| at java.lang.Thread.run(Unknown Source)
|
I wonder how can I catch the HTTP errors sent by the remote server and avoid the client repeat many times the request?
I've looked for the answer in the documentation, but I was not able to find it. Sorry
Your help would be appreciated
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4046762#4046762
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4046762
More information about the jboss-user
mailing list