三啼百科 > 百科 > invoke方法__call.invoke方法

invoke方法__call.invoke方法

导读关于Webservice接口的Java客户端调用最佳答案String endpoint=";;String id = "11111";Service service = new Service();Call call = (Call) service.createCall();call.setTargetEndpointAddress(new URL(endpoint));call.setOp...

今天三啼百科就给我们广大朋友来聊聊invoke方法,以下关于观点希望能帮助到您找到想要的答案。

关于Webservice接口的Java客户端调用

关于Webservice接口的Java客户端调用

最佳答案String endpoint=";;

String id = "11111";

Service service = new Service();

Call call = (Call) service.createCall();

call.setTargetEndpointAddress(new URL(endpoint));

call.setOperationName("webservice方法名");

String res = (String) call.invoke(new Object[] {id});

看了你的描述觉得你把webservice想得太复杂化了,其实就是一个jar包和几个类。

就是最简单的webservice客户端用法,和反射有点像。当然返回值不一定是String,返回的类型和格式要问服务提供方。

我用的是axis的,我不了解websphere什么的,但是webservice就是那么易用的东西。

java 如何调用方法里超过10秒就终止该方法,不往下执行,防止线程阻塞

最佳答案本来用DWR调用方法就是多线程的,线程总数与J2EE容器配置的有关。

建议如下:

如果你这个A()调用的接口一次只允许一个访问,那么需要在A所在的类里设置一个静态成员变量,如static

String

object

=

"some"。

然后在A()方法一开始用synchronized

(object)

{

}把代码都包含进来。

这样可以确保一次只有一个访问。

如果接口一次最多运行固定数目的访问,如10个。那么复杂一些,不过我估计你不是这个情况。一般建议这个固定数目与J2EE容器配置的线程数一致即可。

上述方法都是为了防止接口被同时访问,但这样的后果就是前端用户会等待,甚至线程满。前端等待是没办法的,后面慢,前面只有排队了。线程满的话,最好的方式是采用非阻塞的IO(NIO),不过那个很难做到。你提出的10秒终止方法是一种方案,不过关键在于如何终止一个方法的运行。

很遗憾,Java不能任意终止一个方法的运行,不过对于接口操作,可以如下处理:

a)

如果接口是TCP/IP,那么可以通过强行关闭socket来终止。如:

timer.schedule(

new

TimerTask()

{

public

void

run()

{

socket.close();

}

},

10000);

b)

如果接口是用类库的话,看看它有没有设置timeout的地方,如果有,那么设置一下,如果没有,那么没办法了。

补充:

你用了axis的setTimeout,理论上超过10秒后call.invoke会抛出异常的。

假设后台很慢,每次都需要10秒,假设weblogic线程池大小为50,那么如果同时访问的人超过50个,或者每秒访问量超过5个,那么就会发生线程阻塞。

这是系统性能问题,可以将weblogic的线程池最大数量设置高些来增加吞吐量。不过这种方式治标不治本,如果你的程序预计到并发访问量很大,那么后台响应超过1秒就不太合理了,这个改动起来就很麻烦了。

生活中的难题,我们要相信自己可以解决,看完本文,相信你对 有了一定的了解,也知道它应该怎么处理。如果你还想了解invoke方法的其他信息,可以点击三啼百科其他栏目。

本文来自网络,不代表本站立场,转载请注明出处:https://www.sanguotiyu.com/baike/92653.html

作者: 三啼百科

三啼百科为您提供最全面的生活百科网站大全,主要为您提供数码、汽车、财经、美食、财经、科技、健康、教育、创业、电商、影视、百科等资讯信息,在这里可以找到您所需的答案,解决您所困惑的问题。
折千纸鹤的方法简单又漂亮
自学大专报考费用 自考专科需要多少钱
联系我们

联系我们

0898-88881688

在线咨询: QQ交谈

邮箱: email@wangzhan.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部