0
是新的Web服務生成隨機會話ID。我試圖在Web服務中爲每個用戶所做的登錄生成唯一的會話ID。 我想要做的是,每當用戶在Web服務中使用的登錄()
- 寫一個java文件,它有登錄和註銷方法。
- 爲其生成WSDL文件。
- 然後生成Web服務客戶端(使用Eclipse IDE),與我生成WSDL文件。
- 使用生成的包(客戶端存根)並調用方法。
請讓我知道,如果有我的執行方式的任何缺陷。
1的Java與需要的方法
public String login(String userID, String password) {
if (userID.equalsIgnoreCase("sadmin")
&& password.equalsIgnoreCase("sadmin")) {
System.out.println("Valid user");
sid = generateUUID(userID);
} else {
System.out.println("Auth failed");
}
return sid;
}
private String generateUUID(String userID) {
UUID uuID = UUID.randomUUID();
sid = uuID.toString();
userSessionHashMap = new HashMap<String, String>();
userSessionHashMap.put(userID, sid);
return sid;
}
public void logout(String userID) {
Set<String> userIDSet = userSessionHashMap.keySet();
Iterator<String> iterator = userIDSet.iterator();
if (iterator.equals(userID)) {
userSessionHashMap.remove(userID);
}
}
2.生成WSDL文件
- 從WSDL開發的Web服務客戶端文件。
4.使用開發的客戶端存根。
public static void main(String[] args) throws Exception {
ClientWebServiceLogin objClientWebServiceLogin = new ClientWebServiceLogin();
objClientWebServiceLogin.invokeLogin();
}
public void invokeLogin() throws Exception {
String endpoint = "http://schemas.xmlsoap.org/wsdl/";
String username = "sadmin";
String password = "sadmin";
String targetNamespace = "http://WebServiceLogin";
try {
WebServiceLoginLocator objWebServiceLoginLocator = new WebServiceLoginLocator();
java.net.URL url = new java.net.URL(endpoint);
Iterator ports = objWebServiceLoginLocator.getPorts();
while (ports.hasNext())
System.out.println("ports Iterator size-->" + ports.next());
WebServiceLoginPortType objWebServiceLoginPortType = objWebServiceLoginLocator
.getWebServiceLoginHttpSoap11Endpoint();
String sid = objWebServiceLoginPortType.login(username, password);
System.out.println("sid--->" + sid);
} catch (Exception exception) {
System.out.println("AxisFault at creating objWebServiceLoginStub"
+ exception);
exception.printStackTrace();
}
}
在運行這個文件,我得到以下錯誤。
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.net.ConnectException: Connection refused: connect
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:java.net.ConnectException: Connection refused: connect
任何人都可以建議一種處理此任務的替代方法嗎?而這可能是造成這個錯誤的原因。
感謝 -AJ
但我聽說有一些所謂的「有狀態Web服務」。如果是的話,這會有幫助嗎?它如何實施? –
看到這篇文章。 http://wso2.org/library/articles/stateful-web-services-axis2。這似乎是很多麻煩:) –
感謝您的資源。 –