Axis的问题,急!

yingyi8989 2007-12-12 03:28:10
Server:
public class MyService
{
public String userLogin(String name, String password)
{
if ("123".equals(name) && "123".equals(password)) {
return true;
}
retrun false;
}
}

拷贝了一份文件MyService.java 改名为MyService.jws

Client:
public class MainTest {
public static void main(String[] args)
{
try {
String endpoint = "http://localhost:8085/test/MyService.jws";

Service service = new Service();
Call call = null;


call = (Call) service.createCall();

call.setOperationName(new QName(endpoint, "userLogin"));
call.setTargetEndpointAddress(new java.net.URL(endpoint));

Boolean bool = (Boolean) call.invoke(new Object[] { "123","123" });
System.out.println("return value is " + bool);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}

这样调用是成功的,但是看到服务那边的Session会越来越多。所以加入了server-config.wsdd文件,原来是使用默认的。
在默认的文件中加入了以下配置:
<handler name="session"
type="java:org.apache.axis.handlers.SimpleSessionHandler" />
<service name="MyService" provider="java:RPC" style="wrapped">
<namespace>urn:</namespace>
<requestFlow>
<handler type="session" />
</requestFlow>
<responseFlow>
<handler type="session" />
</responseFlow>
<parameter name="className" value="MyService" />
<parameter name="allowedMethods" value="*" />
</service>

这样就更改了访问的url,现在client的代码如下:

public class MainTest {
public static void main(String[] args)
{
try {
String endpoint = "http://localhost:8085/test/services/MyService?wsdl";

Service service = new Service();
Call call = null;


call = (Call) service.createCall();

call.setOperationName(new QName(endpoint, "userLogin"));
call.setTargetEndpointAddress(new java.net.URL(endpoint));

Boolean bool = (Boolean) call.invoke(new Object[] { "123","123" });
System.out.println("return value is " + bool);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}

有两个问题:
1、如果我想用原来的url,要怎么做?
2、后来的代码Boolean bool = (Boolean) call.invoke(new Object[] { "123","123" }); 会报类型转换错误,为什么前面的方法可以得到Boolean,后面的只得到String呢?
先谢了。
...全文
102 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
yzj520hyy 2008-02-20
  • 打赏
  • 举报
回复
我也刚学,要用原来的URL有一个下下策:在web.xml中定义这样的映射.......
关于第2个问题,说一点我的看法,你不觉得使用invoke很别扭吗?用动态代理吧,虽然多一个接口.但是可以更自然的操作不是吗?
jjjcct 2008-02-20
  • 打赏
  • 举报
回复
http://localhost:8085/test/services/MyService?wsdl 这个url能起作用吗?

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧