java程序在xfire调用webservicee中间出现异常,怎么办

在用Java调用一个webservice引用时,出现的安全异常:java.lang.SecurityException:禁止创建如图的连接_百度知道
在用Java调用一个webservice引用时,出现的安全异常:java.lang.SecurityException:禁止创建如图的连接
baidu.jpg" />不知道哪儿的默认设置有问题.baidu.hiphotos://f./zhidao/wh%3D450%2C600/sign=6c564ee530ec3d86eeb0b4/d439bcc940d99c65cb3.jpg" target="_blank" title="点击查看大图" class="ikqb_img_alink"><img class="ikqb_img" src="http.jpg" esrc="/zhidao/pic/item/d439bcc940d99c65cb3<img class="ikqb_img" src="http.hiphotos.baidu.hiphotos此问题是因为Domino服务器上的java代理的运行权限太低.com/zhidao/wh%3D450%2C600/sign=34a829b7b085febb5d0ef287d36d3d539b600bc7c./zhidao/pic/item/b5bb5d0ef287d36d3d539b600bc7c,修改代理运行时安全级别就行了&nbsp,服务器不允许执行该操作.com/zhidao/wh%3D600%2C800/sign=8debcdac3a292dfcbb5d0ef287d36d3d539b600bc7c://b://b.jpg" esrc="http.hiphotos://b;<a href="http
提问者评价
按照你说的,真的成功了,好开心,谢谢你!
采纳率100%
其他类似问题
webservice的相关知识
您可能关注的推广
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁java调用webservice时抛出该异常:Fault occurred while processing
由于调用webservice接口方法时,传的数据是NUll&#20540;。
将NUll&#20540;改为空字符串(既:“”)就没问题了。
注意:使用webservice时,webservice的实现类和接口要放在同一目录下。
&此文从网络中自动搜索生成,不代表本网站赞成被搜索网站的内容或立场
&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&
软件世界网- &2014 蜀ICP备号 三峰网旗下网站7234人阅读
& & & Webservice技术在开发中算是一个比较常见技术。这个对于大多数的开发者,别管是程序员还是程序员应该都不是很陌生。今天我就和大家一起来学习一下的基本内容。此篇文章作为webservice的开篇,首先我们来看一下什么是。他能干什么用呢?什么是?&&&&&Web&Services是由企业发布的完成其特定商务需求的在线应用服务其他公司或应用软件能够通过来访问并使用这项在线服务。&用简单点的话说,就是系统对外的接口!一个企业开发出某种功能之后,我就对外提供一个接口。别人如果也想要这个功能的话直接通过调用我所提供的接口。就可以实现相同的功能。当然了这些功能可以收费的。&&&&&它是一种构建应用程序的普遍模型可以在任何支持网络通信的操作系统中实施运行;它是一种新的应用程序分支,是自包含、自描述、模块化的应用,可以发布、定位、通过调用。是一个应用组件它逻辑性的为其他应用程序提供数据与服务各应用程序通过网络协议和规定的一些标准数据格式(,,来访问通过内部执行得到所需结果可以执行从简单的请求到复杂商务处理的任何功能。一旦部署以后,其他应用程序可以发现并调用它部署的服务&Webservice的相关技术在构建和使用时主要用到以下几个关键的技术和规则1.XML:描述数据的标准方法 可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。& 2.SOAP:简单对象访问协议. 是一种轻量的、简单的、基于&的协议,它被设计成在&上交换结构化的和固化的信息。&SOAP协议&协议&数据格式&WebService采用协议传输数据,采用格式封装数据& 3.WSDL:Web服务描述语言 是一个用来描述服务和说明如何与服务通信的语言。为用户提供详细的接口说明书。&它是客户端和服务器端都能理解的标准格式,其中描述的信息可以分为等部分what:服务是什么(服务中有哪些方法,方法接受的参数是什么,返回值是什么)where:服务的网络地址用哪个地址表示how:服务通过什么方式来调用WSDL文件保存在服务器上,通过一个地址访问服务提供商可以通过两种方式来暴露它的文件地址:注册到服务器,以便被人查找。直接告诉给客户端调用者,例如,在自己网站给出信息或邮件告诉。4.UDDI(Universal&Description,&Discovery&and&Integration):通用描述、发现与集成,它是一种独立于平台的,基于语言的用于在互联网上描述商务的协议。可译为通用描述、发现与集成服务。实际上,的主要目标是跨平台的可互操作性。为了达到这一目标,完全基于(可扩展标记语言)、()等独立于平台、独立于软件供应商的标准,是创建可互操作的、分布式应用程序的新平台。&& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &Webservice的工作过程:下面我们用几个图的实例来简单理解一下如何实现实时天气预报?如何使用安付通进行货款支付?Web服务在其中起到的作用:由上面的图我们可以看出:Web&Service的出现&1.让任何平台上的用任何语言编写的服务进行交互。&2.将应用程序功能概念化成任务,从而形成面向任务的开发和工作流。这使得更抽象的软件能够为工作在业务层面具有较少软件分析技术的用户所用。&3.允许松耦合,这意味着,每当其中某个或多个服务在设计或实现中发生改变时,服务应用程序之间的交互不会因此而中断。&4.使现有的应用程序能适应不断变化的业务条件和客户需求。&5.向现有或遗留软件应用程序提供服务接口,而无需改变原来的应用程序,从而使这些应用程序完全可以运行在这种服务环境下。&6.引入其他一些与原有功能无关的管理或操作管理功能,比如可靠性、责任性和安全性等等,从而在业务计算环境中增加其通用性和实用性。Webservice应用场景1.跨防火墙的通信  如果应用程序有成千上万的用户,而且分布在世界各地,那么客户端和服务器之间的通信将是一个棘手的问题。因为客户端和服务器之间通常会有防火墙或者代理服务器。在这种情况下,使用就不是那么简单,通常也不便于把客户端程序发布到数量如此庞大的每一个用户手中。传统的做法是,选择用浏览器作为客户端,写下一大堆JSP页面,把应用程序的中间层暴露给最终用户。这样做的结果是开发难度大,程序很难维护。&&&&&&如果中间层组件换成的话,就可以从用户界面直接调用中间层组件,从而省掉建立JSP页面的那一步。要调用,可以直接使用这样的客户端,也可以使用自己开发的客户端,然后把它和应用程序连接起来。不仅缩短了开发周期,还减少了代码复杂度,并能够增强应用程序的可维护性。同时,应用程序也不再需要在每次调用中间层组件时,都跳转到相应的结果页。&2.应用程序集成  企业级的应用程序开发者都知道,企业里经常都要把用不同语言写成的、在不同平台上运行的各种程序集成起来,而这种集成将花费很大的开发力量。应用程序经常需要从运行在主机上的程序中获取数据;或者把数据发送到主机或应用程序中去。即使在同一个平台上,不同软件厂商生产的各种软件也常常需要集成起来。通过,应用程序可以用标准的方法把功能和数据暴露出来,供其它应用程序使用。&长项三:的集成  用集成应用程序,可以使公司内部的商务处理更加自动化。但当交易跨越供应商和客户、突破公司的界限时会怎么样呢?跨公司的商务交易集成通常叫做集成。  是集成成功的关键。通过,公司可以把关键的商务应用暴露给指定的供应商和客户。例如,把电子下单系统和电子发票系统暴露出来,客户就可以以电子的方式发送订单,供应商则可以以电子的方式发送原料采购发票。当然,这并不是一个新的概念,电子文档交换早就是这样了。但是,的实现要比简单得多,而且运行在上,在世界任何地方都可轻易实现,其运行成本就相对较低。不过,并不像那样,是文档交换或集成的完整解决方案。只是集成的一个关键部分,还需要许多其它的部分才能实现集成。&长项四:软件和数据重用  软件重用是一个很大的主题,重用的形式很多,重用的程度有大有小。最基本的形式是源代码模块或者类一级的重用,另一种形式是二进制形式的组件重用。当前,像表格控件或用户界面控件这样的可重用软件组件,在市场上都占有很大的份额。但这类软件的重用有一个很大的限制,就是重用仅限于代码,数据不能重用。原因在于,发布组件甚至源代码都比较容易,但要发布数据就没那么容易,除非是不会经常变化的静态数据。参考资料:
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1793904次
积分:21809
积分:21809
排名:第123名
原创:210篇
转载:41篇
评论:3389条
阅读:84611
阅读:47664
文章:12篇
阅读:72007
文章:18篇
阅读:93842
文章:14篇
阅读:82525
阅读:44706
文章:112篇
阅读:826292
(1)(1)(1)(1)(8)(1)(5)(1)(3)(1)(4)(1)(1)(2)(3)(4)(9)(13)(10)(7)(2)(8)(29)(25)(35)(15)(14)(6)(5)(9)(7)(7)(12)赶快加入吧
收藏,4.7k 浏览
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
当用户使用账号密码登录成功将从服务器获得一个 sessionid, 该 sessionid 也会保存在服务器上,接下来的每一次请求都会验证这个 sessionid。
我的问题是怎么通过 HttpPost 的方式获得一个 sessionid,我更想知道后台服务器是怎么做到的。
下面是 client 端的代码:
HttpClient httpclient = new DefaultHttpClient();
String url = "http://localhost:8080/login.jsp";
HttpPost httppost = new HttpPost(url);
// Add your data
List&NameValuePair& nameValuePairs = new ArrayList&NameValuePair&(2);
nameValuePairs.add(new BasicNameValuePair("account", "root"));
nameValuePairs.add(new BasicNameValuePair("password", "ilovepassword"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
/* get a sessionid from response simple code * /
string content = response.getEntity().getContent().toString(); * /
org.json.JSONObject respMessage = new JSONObject(content); * /
sessionid = (String)respMessage.get("sessionid"); * /
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
我的问题具体地说,就是当我的 url 设置不是一个页面的时候,webservice 的 server 端是怎么处理 httpclient 传输过来的 account 和 password 的,然后怎么返回 sessionid 的。
附一个外国人的提问链接:
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
java's Web Service is different from HttpPost, HttpGet and HttpResponse that kind of things. It is more easy to pass anything, any Object you like.
如果要利用Web Service返回一个sessionid的话,可以使用从Server返回返回值的形式,也可以在Client端实现SOAPHandler,然后在public boolean handleMessage(SOAPMessageContext context)方法中处理response的cookie,利用正则表达式获取JSESSIONID的值。
因为handleMessage每次都会首先执行,不管是request还是response过程,所以我只谈谈第一种方法,顺便对session过期也做下测试。以下是Demo及说明:
(一)创建Server类
public class HelloServer {
public WebServiceContext wsC
public String onLogin(){
public String sayHello(String sessionid) {
(二)使用MyEclipse工具生成Delegate类
@javax.jws.WebService(targetNamespace = "http://ws.jax_/", serviceName = "HelloServerService", portName = "HelloServerPort", wsdlLocation = "WEB-INF/wsdl/HelloServerService.wsdl")
public class HelloServerDelegate {
HelloServer helloServer = new HelloServer();
public String onLogin() {
return helloServer.onLogin();
public String sayHello(String sessionid) {
return helloServer.sayHello(sessionid);
利用MyEclipse工具生成了Delegate类之外,还生成了sun-jaxws.xml和wsdl路径下的HelloServerService_schema1.xsd和HelloServerService.wsdl文件。
(三)简单修改Delegate类和Server类,加入session部分代码
查看sun-jaxws.xml文件就可以知道HelloServerPort是由HelloServerDelegate类实现的,而在Delegate类中只是new了一个HelloServer对象,然后调用相应方法实现onLogin和sayHello的。参考网上“Web Service管理session”相关的文章,我们可以在HelloServer中加入相关代码获取session,不过本文的建议是在Delegate类中注入@Resource而不是在Server类中注入,不修改sun-jaxws.xml在Server中注入是不会成功的。
参考代码:
public class HelloServerDelegate {
private WebServiceContext wsC
HelloServer helloServer = new HelloServer();
public String onLogin() {
helloServer.wsContext = this.wsC
return helloServer.onLogin();
public String sayHello(String sessionid) {
return helloServer.sayHello(sessionid);
要将wsContext传递给HelloServer,就必须在HelloServer类中新建一个WebServiceContext类型的成员变量,为了方便本文把它设置为public域的变量,且看Server类新增的代码:
public WebServiceContext wsC
public String onLogin(){
MessageContext mc = wsContext.getMessageContext();
HttpSession session = ((javax.servlet.http.HttpServletRequest)mc.get(MessageContext.SERVLET_REQUEST)).getSession();
if (session == null) {
throw new WebServiceException("No session in WebServiceContext");
sessionid = session.getId().toString();
(四)设置session过期时间
设置session过期有两种方式可以选择,一种是在sessionid返回之前设置当前session的有效期,使用setMaxInactiveInterval方法,提供int类型的参数,单位是秒。另外一种是在web.xml中加入session-config标签,单位是分钟。
&session-config&
&session-timeout&1&/session-timeout&
&/session-config&
(五)在sayHello方法中加入必要的逻辑
从Client发起请求首先调用的onLogin,然后才是sayHello,从onLogin调用获得的sessionid作为调用sayHello的参数。
public String sayHello(String sessionid) {
MessageContext mc = wsContext.getMessageContext();
HttpSession session = ((javax.servlet.http.HttpServletRequest)mc.get(MessageContext.SERVLET_REQUEST)).getSession();
if (session == null) {
throw new WebServiceException("No session in WebServiceContext");
if(sessionid.equals(session.getId().toString())) {
System.out.println(“Hello!”);
return “OK”;
return “EXPIRED”;
(六)创建Client工程,使用工具生成Web Service需要的类
在创建Client工程前可以将Server工程运行起来,从Server工程的HelloServerService.wsdl文件中找到,这个地址会在接下来使用得到。
在Client工程中新建一个Web Service Client,填入刚才的地址加入”?WSDL”,生成Web Service所需的类。
(七)创建Client类用来发起请求与Server通信
public class HelloClient {
private static S
public static void main(String[] args) {
HelloServerService service = new HelloServerService();
HelloServerDelegate port = service.getHelloServerPort();
// 设置保留session
((BindingProvider)port).getRequestContext().put(BindingProvider.SESSION_MAINTAIN_PROPERTY,true);
// 第一次调用onLogin获得sessionid
sessionid = port.onLogin();
while(true){
// 休息超过session有效期
Thread.sleep(65000);
} catch (InterruptedException e) {
e.printStackTrace();
String result = port.sayHello(sessionid);
if(result.equals("OK")){
System.out.println("session is"+result);
System.out.println("session is"+result);
}// end of while loop
System.out.println("HelloClient::end of while loop");
如果session过期还可以让Client再次执行onLogin方法获得新的sessionid,sayHello方法也可以返回其他类型的值
(八)使用TCP/IP插件查看Web Service的request和response
或者参考下一篇文章。
(九)完整工程代码
同步到新浪微博
不要错过该问题的后续解决方案
如果你没找到答案,记得登录关注哦,大家会尽全力帮你解决的 ^___^
最专业的开发者社区
最前沿的技术问答,最纯粹的技术切磋。让你不知不觉中开拓眼界,提高技能,认识更多朋友。
分享到微博?
关闭理由:
删除理由:
忽略理由:
与已有问题重复
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
内容质量差,或不适合在本网站出现
无意义讨论型问题
其他原因(请补充说明)
举报理由:
带有人身攻击、辱骂、仇恨等违反条款的内容
与已有问题重复
内容质量差,或不适合在本网站出现
答非所问,不符合答题要求
其他原因(请补充说明)
补充说明:}

我要回帖

更多关于 xfire调用webservice 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信