这是我的客户端代码,主要是测测服务端对session的管理public class TestSession
{
public static void main(String[] args) throws Exception
{
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
options.setManageSession(true);/**这是网上说的,测试session,客户端必须调用这个方法,设置参数为true*/ String url=" http://localhost:8080/axis2/services/loginService";
EndpointReference targetEPR = new EndpointReference(url);
options.setTo(targetEPR);
Object[] opAddEntryArgs = new Object[] {"bill","1234"};
Class[] classes = new Class[] {String.class};
QName opAddEntry = new QName("http://service", "login");
System.out.println(serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs, classes)[0]);
}
}服务端的代码如下
public class LoginService
{
public String login(String username, String password)
{
if("bill".equals(username) && "1234".equals(password))
{
MessageContext mc = MessageContext.getCurrentMessageContext();
ServiceContext sc = mc.getServiceContext();
sc.setProperty("login", "成功登录");
return "true";
}
else
{
return "false";
}
}
public String getLoginMsg()
{
MessageContext mc = MessageContext.getCurrentMessageContext();
ServiceContext sc = mc.getServiceContext();
return (String)sc.getProperty("login");
}
}配置的service.xml为
<service name="loginService" scope="transportsession">
<description>
LoginService
</description>
<parameter name="ServiceClass">
service.LoginService
</parameter>
<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</messageReceivers>
</service>结果一运行客户端代码显示如下异常
org.apache.axis2.AxisFault: Transport out has not been set,不知高人们遇到过这种问题没有……
{
public static void main(String[] args) throws Exception
{
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
options.setManageSession(true);/**这是网上说的,测试session,客户端必须调用这个方法,设置参数为true*/ String url=" http://localhost:8080/axis2/services/loginService";
EndpointReference targetEPR = new EndpointReference(url);
options.setTo(targetEPR);
Object[] opAddEntryArgs = new Object[] {"bill","1234"};
Class[] classes = new Class[] {String.class};
QName opAddEntry = new QName("http://service", "login");
System.out.println(serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs, classes)[0]);
}
}服务端的代码如下
public class LoginService
{
public String login(String username, String password)
{
if("bill".equals(username) && "1234".equals(password))
{
MessageContext mc = MessageContext.getCurrentMessageContext();
ServiceContext sc = mc.getServiceContext();
sc.setProperty("login", "成功登录");
return "true";
}
else
{
return "false";
}
}
public String getLoginMsg()
{
MessageContext mc = MessageContext.getCurrentMessageContext();
ServiceContext sc = mc.getServiceContext();
return (String)sc.getProperty("login");
}
}配置的service.xml为
<service name="loginService" scope="transportsession">
<description>
LoginService
</description>
<parameter name="ServiceClass">
service.LoginService
</parameter>
<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</messageReceivers>
</service>结果一运行客户端代码显示如下异常
org.apache.axis2.AxisFault: Transport out has not been set,不知高人们遇到过这种问题没有……
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货