Topic: AXIS中关于SESSION的问题 |
Print this page |
1.AXIS中关于SESSION的问题 | Copy to clipboard |
Posted by: phoenixfmc Posted on: 2006-05-19 14:33 我是一个AXIS的初学者。现在有一个问题想请教大家:在服务器端如何维护一个SESSION。我看到有的资料里说用HANDLER,我也试了,现在SOAP消息中也能自动加入上次会话的ID,可是还是得不到上次SESSION中的存的值。现在真的没有办法了。能找的资料都找了,谁能不能帮我看一下啊?package fmc; import java.sql.ResultSet; import java.sql.SQLException; import javax.servlet.http.HttpSession; import javax.xml.soap.SOAPException; import org.apache.axis.session.Session; import org.apache.axis.MessageContext; public class ServiceTest { MessageContext mc = MessageContext.getCurrentContext(); final Session conSession = mc.getSession(); public boolean login(String username, String password) throws Exception { mc.setMaintainSession(true); System.out.println("Deng lu ID and Ps :" + username + " " + password); String sql = "select * from aa022 where aav001='" + username + "' and aaw001='" + password + "'"; ResultSet result = OraJDBCTest.executeQuery(sql); if (result.next()) { conSession.set("username", username); conSession.set("password", password); conSession.touch(); OraJDBCTest.close(); return true; } else { return false; } } public boolean changeadminpwd(String oldpwd, String newpwd) throws SQLException, ClassNotFoundException, SOAPException { mc.setMaintainSession(true); System.out.println("olspwd :" + oldpwd + " " + "newpwd :" + newpwd); String password = (String) conSession.get("password"); System.out.println("Two word :" + "oldpwd :" + oldpwd + " and " + "password :" + password); String name = (String) conSession.get("username"); System.out.println("Session get username :" + name); String sql = "select * from aa022 where aaw001='" + oldpwd + "' and aab002='" + name + "'"; ResultSet rs = OraJDBCTest.getRs(sql); if (rs.next()) { String sqlupdate = "update aa022 set aaw001='" + newpwd + "' where aab002='" + name + "' and aaw001='" + oldpwd + "'"; OraJDBCTest.executeUpdate(sqlupdate); OraJDBCTest.close(); return true; } else { return false; } } } import java.net.MalformedURLException; import java.rmi.RemoteException; //import org.apache.axis.handlers.SimpleSessionHandler; import org.apache.axis.client.Service; import org.apache.axis.client.Call; import client.ServiceTestServiceLocator; import client.ServiceTest_PortType; import javax.xml.namespace.QName; import javax.xml.rpc.ServiceException; public class TestClient { Service service = new Service(); ServiceTestServiceLocator locator = new ServiceTestServiceLocator(); public void loginTest(String username,String password) { try { locator.setMaintainSession(true); ServiceTest_PortType st = locator.getServiceTest(); if(st.login(username, password)){ System.out.println("Ke Yi Deng Lu ! "); } else{ System.out.println("CUO WU ! QING CHONG SHI !"); } /*Call call = (Call) service.createCall(); // call.setProperty(Call.SESSION_MAINTAIN_PROPERTY,Boolean.TRUE); //call.setProperty(Call.USERNAME_PROPERTY,username); //call.setProperty(Call.PASSWORD_PROPERTY,password); // call.setMaintainSession(true); //call.setUsername(username); //call.setPassword(password); String endpoint = "http://192.168.0.22:8899/MyService/services/Sessions?wsdl"; call.setOperationName(new QName(endpoint, "login")); call.setTargetEndpointAddress(new java.net.URL(endpoint)); //call.addParameter("fmc",org.apache.axis.Constants.XSD_STRING,javax.xml.rpc.ParameterMode.IN); //call.setReturnType(org.apache.axis.Constants.XSD_STRING); Object[] params = { username, password }; String obj = (String)call.invoke(params); System.out.println(obj); if (obj.equals("true")) { System.out.println("Ke Yi Deng Lu ! " + obj + " !"); } else if(obj.equals("false")){ System.out.println("CUO WU ! QING CHONG SHI !"); }*/ } catch (Exception e) { e.printStackTrace(); } } public void changeTest(String oldpwd, String newpwd) throws ServiceException, MalformedURLException, RemoteException { locator.setMaintainSession(true); ServiceTest_PortType st = locator.getServiceTest(); if(st.changeadminpwd(oldpwd, newpwd)){ System.out.println("Xiu Gai Cheng Gong ! "); } else{ System.out.println("CUO WU ! CHONG SHI !"); } /*Call call = (Call) service.createCall(); //call.setMaintainSession(true); String endpoint = "http://192.168.0.22:8899/MyService/services/Sessions?wsdl"; call.setOperationName(new QName(endpoint, "changeadminpwd")); call.setTargetEndpointAddress(new java.net.URL(endpoint)); // call.addParameter("fmc",org.apache.axis.Constants.XSD_STRING,javax.xml.rpc.ParameterMode.IN); // call.setReturnType(org.apache.axis.Constants.XSD_STRING); Object[] params = { oldpwd, newpwd }; String obj = (String) call.invoke(params); // System.setProperty("org.xml.sax.driver", // "org.apache.xerces.parsers.SAXParser"); System.out.println(obj); if (obj.equals("true")) { System.out.println("XIU GAI CHENG GONG ! " + obj + " !"); } if (obj.equals("false")) { System.out.println("CUO WU ! QING CHONG SHI !"); }*/ } public static void main(String[] args) throws MalformedURLException, RemoteException, ServiceException { TestClient tc = new TestClient(); //tc.loginTest("admin", "admin"); tc.changeTest("admin", "phoenix"); } } |
2.Re:AXIS中关于SESSION的问题 [Re: phoenixfmc] | Copy to clipboard |
Posted by: phoenixfmc Posted on: 2006-06-02 11:18 怎么这么久了还是没有人回答啊??这个问题有那么难吗???能不能有谁给个说法啊????也太没有效率啦!!!!! |
3.Re:AXIS中关于SESSION的问题 [Re: phoenixfmc] | Copy to clipboard |
Posted by: aweisw Posted on: 2006-07-14 09:54 我没有用过AXIS 不过有个方法你可以试试 import javax.xml.ws.WebServiceContext; public class ServiceTest { @Resource private WebServiceContext wsContext; MessageContext mc = wsContext.getMessageContext(); HttpSession session = ((javax.servlet.http.HttpServletRequest)mc.get(MessageContext.SERVLET_REQUEST)).getSession(); } 以上是服务端的...在客户端还是需要设置,不然每次都是新的session...怎么设置我现在也没弄起. |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |