import org.apache.axis2.context.MessageContext;
import org.apache.axis2.context.ServiceGroupContext;
public class User
{
/**
* 用戶登錄
* @param userName
* @param password
* @return
*/
public boolean login(String userName, String password)
{
MessageContext mc = MessageContext.getCurrentMessageContext();
ServiceGroupContext sgc = mc.getServiceGroupContext();
sgc.setProperty("userName", userName);
return true;
}
/**
* 用戶退出登錄
* @return
*/
public String logout()
{
MessageContext mc = MessageContext.getCurrentMessageContext();
ServiceGroupContext sgc = mc.getServiceGroupContext();
if (sgc!= null && sgc.getProperty("userName") != null)
{
String userName = sgc.getProperty("userName").toString();
sgc.setProperty("userName", null);
return userName + "退出登錄";
}
return "未登錄";
}
}
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.context.ServiceGroupContext;
public class Biz
{
/**
* 模擬業務操作
* @return
*/
public String doBiz()
{
MessageContext mc = MessageContext.getCurrentMessageContext();
ServiceGroupContext sgc = mc.getServiceGroupContext();
if (sgc==null || sgc.getProperty("userName") == null) return "未登錄,不能進行業務操作";
else return "業務操作成功。操作員:" + sgc.getProperty("userName");
}
}
<service name="User" scope="transportsession">
<Description>
用戶登錄服務
</Description>
<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
</messageReceivers>
<parameter name="ServiceClass" locked="false">demo.axis2.User</parameter>
</service>
<service name="Biz" scope="transportsession">
<Description>
業務服務
</Description>
<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
</messageReceivers>
<parameter name="ServiceClass" locked="false">demo.axis2.Biz</parameter>
</service>
</serviceGroup>
import javax.xml.namespace.QName;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
public class UserClient
{
public static void main(String[] args) throws Exception
{
// 使用RPC方式調用WebService
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
/* 用戶登錄 */
// 指定調用WebService的URL
EndpointReference targetEPR = new EndpointReference(
"http://localhost:8080/Axis2ServerDemo/services/User");
options.setTo(targetEPR);
options.setManageSession(true);
// 指定方法的參數值
Object[] opAddEntryArgs = new Object[] {"tom", "pwd"};
// 指定方法返回值的數據類型的Class對象
Class[] classes = new Class[] {Boolean.class};
// 指定要調用的getGreeting方法及WSDL文件的命名空間
QName opAddEntry = new QName("http://axis2.demo", "login");
// 調用方法並輸出該方法的返回值
System.out.println(serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs, classes)[0]);
/* 業務操作 */
EndpointReference targetEPR1 = new EndpointReference(
"http://localhost:8080/Axis2ServerDemo/services/Biz");
options.setTo(targetEPR1);
Object[] opAddEntryArgs1 = new Object[] {};
Class[] classes1 = new Class[] {String.class};
QName opAddEntry1 = new QName("http://axis2.demo", "doBiz");
System.out.println(serviceClient.invokeBlocking(opAddEntry1, opAddEntryArgs1, classes1)[0]);
/* 用戶退出登錄 */
options.setTo(targetEPR);
Object[] opAddEntryArgs2 = new Object[] {};
Class[] classes2 = new Class[] {String.class};
QName opAddEntry2 = new QName("http://axis2.demo", "logout");
System.out.println(serviceClient.invokeBlocking(opAddEntry2, opAddEntryArgs2, classes2)[0]);
}
}