通过Axis webservice客户端进行NTLM认证的方法:
axis是通过httpclient进行认证的,所以需要先下载httpclient程序,还需要解码程序commons-codec-1.3.jar

这两个接口google一下就行了,Axis的客户端代码如下:
 1         try
 2         {
 3             String endpoint = "http://localhost:7001/Test/WebServices.asmx?wsdl";
 4             Service service = new Service();
 5             Call    call    = (Call)service.createCall();
 6             
 7             call.setTargetEndpointAddress(new URL(endpoint));
 8             call.getMessageContext().setUsername("domain\\user");
 9             call.getMessageContext().setPassword("password");
10             call.setClientHandlers(new CommonsHTTPSender(),null);
11             
12             call.setOperationName(new QName("Method"));
13             call.addParameter("ParamName1", XMLType.XSD_STRING, ParameterMode.IN );
14             call.setReturnClass(String.class);
15             String ret  = (String)call.invoke(new Object[]{new String("aaaa")});
16             
17             System.out.println(ret);            
18             
19         }
20         catch(Exception ex)
21         {
22             ex.printStackTrace();
23         }

通过监听客户端发出的http头信息,可以发现发出的认证信息如下:
   Authorization: NTLM LKJSDLKFJLSDKJFLKSDAAAAAAAAAAAAAAAAAAAAAAA=

服务器如果采用一般的http认证,可以HTTPSender代替CommonHttpSender,通过他的代码可以发现:
 1         if (userID != null) {
 2             StringBuffer tmpBuf = new StringBuffer();
 3 
 4             tmpBuf.append(userID).append(":").append((passwd == null)
 5                     ? ""
 6                     : passwd);
 7             otherHeaders.append(HTTPConstants.HEADER_AUTHORIZATION)
 8                     .append(": Basic ")
 9                     .append(Base64.encode(tmpBuf.toString().getBytes()))
10                     .append("\r\n");
11         }

HttpSender直接生成http的Authorization头信息进行设置,发出的http header代码例子:
Authorization: Basic SDKFJLSDKJLlsdlfksjdflksjw232lj

如果需要进行webservice的自定义认证可以自己实现axis的handler。