1. 发布Basic Author 认证#
就是在web.xml里面添加如下代码
/services/* 是路径
role1 是tomcat 下conf/tomcat-users.xml下的用户
<security-constraint>
<web-resource-collection>
<web-resource-name>Simple Authenticate Web service</web-resource-name>
<url-pattern>/services/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>role1</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Axis Basic Authentication Area</realm-name>
</login-config>
<security-role>
<role-name>role1</role-name>
</security-role>
#2. 效果图如下#
#3. soapui测试如下#
#4. axis1的连接代码 eclipse自带可以自动生成# 在BindingStub代码中的
protected org.apache.axis.client.Call createCall()
throws java.rmi.RemoteException {
try {
org.apache.axis.client.Call _call = super._createCall();
if (super.maintainSessionSet) {
_call.setMaintainSession(super.maintainSession);
}
// if (super.cachedUsername != null) {
// _call.setUsername(super.cachedUsername);
// }
// if (super.cachedPassword != null) {
// _call.setPassword(super.cachedPassword);
// }
//设置用户名密码
_call.setUsername(GZFZConfig.getValue("username"));
_call.setPassword(GZFZConfig.getValue("password"));
if (super.cachedEndpoint != null) {
_call.setTargetEndpointAddress(super.cachedEndpoint);
}
//设置超时的
if (super.cachedTimeout != null) {
_call.setTimeout(super.cachedTimeout);
}
if (super.cachedPortName != null) {
_call.setPortName(super.cachedPortName);
}
java.util.Enumeration keys = super.cachedProperties.keys();
while (keys.hasMoreElements()) {
java.lang.String key = (java.lang.String) keys.nextElement();
_call.setProperty(key, super.cachedProperties.get(key));
}
// All the type mapping information is registered
// when the first call is made.
// The type mapping information is actually registered in
// the TypeMappingRegistry of the service, which
// is the reason why registration is only needed for the first call.
synchronized (this) {
if (firstCall()) {
// must set encoding style before registering serializers
_call.setEncodingStyle(null);
for (int i = 0; i < cachedSerFactories.size(); ++i) {
java.lang.Class cls = (java.lang.Class) cachedSerClasses
.get(i);
javax.xml.namespace.QName qName = (javax.xml.namespace.QName) cachedSerQNames
.get(i);
java.lang.Object x = cachedSerFactories.get(i);
if (x instanceof Class) {
java.lang.Class sf = (java.lang.Class) cachedSerFactories
.get(i);
java.lang.Class df = (java.lang.Class) cachedDeserFactories
.get(i);
_call.registerTypeMapping(cls, qName, sf, df, false);
} else if (x instanceof javax.xml.rpc.encoding.SerializerFactory) {
org.apache.axis.encoding.SerializerFactory sf = (org.apache.axis.encoding.SerializerFactory) cachedSerFactories
.get(i);
org.apache.axis.encoding.DeserializerFactory df = (org.apache.axis.encoding.DeserializerFactory) cachedDeserFactories
.get(i);
_call.registerTypeMapping(cls, qName, sf, df, false);
}
}
}
}
return _call;
} catch (java.lang.Throwable _t) {
throw new org.apache.axis.AxisFault(
"Failure trying to get the Call object", _t);
}
}
#5. axis2的连接代码 可以使用WSDL2Java#
stub = new SI_PersonBusiness_ReqServiceStub(wsdlurl);
// 认证代码 start
HttpTransportProperties.Authenticator auth = new HttpTransportProperties.Authenticator();
auth.setUsername("****");
auth.setPassword("****");
stub._getServiceClient().getOptions()
.setProperty(HTTPConstants.AUTHENTICATE, auth);