【发布时间】:2011-04-06 17:37:14
【问题描述】:
我使用 netbeans 在 Glassfish 服务器上创建和部署 SSL ejb hello world Web 服务,然后尝试(不成功)从 Java 应用程序使用该服务。
任何帮助将不胜感激。下面是我所做的更多细节。
- 我创建了一个 hello world (ejb) Web 服务。
- 我将 hello world Web 服务的安全服务选项设置为传输安全 (SSL)
- 我在 glassfish 3.1 上部署了 Web 服务
- 我创建了一个 java 应用程序,添加了一个使用 wsdl 使用 hello world Web 服务的 Web 服务客户端:“https://localhost:8181/OanhWebService/OanhWebService?wsdl”
- 当我尝试调用 Web 服务时,出现以下错误: 线程“主”javax.xml.ws.soap.SOAPFaultException 中的异常:WSS1601:未满足安全要求 - 策略中配置了传输绑定,但传入消息未启用 SSL 当我尝试打开 Web 服务参考的“编辑 Web 服务属性”对话框时,在“服务质量”选项卡中只有一个选项传输,缺少选项安全性。 请帮忙!这是一项非常基本的任务,但令人惊讶地花费了我很多时间。 非常感谢, 图
下面是更多细节:
------------------工具版本-------------------------- -------
Glassfish 版本:3.1 Netbeans 版本 7.0 RC1(尝试了 6.9.1 和 7 Beta、7 Beta2 但遇到同样的问题!) 地铁2.0
------------------已发布的 WSDL-------------------------- ------------
从 Web 浏览器查看的 WSDL:
@namespace html url(http://www.w3.org/1999/xhtml); :root { 字体:small Verdana;字体粗细:粗体;填充:2em;填充左:4em; } * { 显示:块;左填充:2em; } html|style { 显示:无; } html|span, html|a { 显示:内联;填充:0;字体粗细:正常;文字装饰:无; } html|span.block { 显示:块; } *[html|hidden], span.block[html|hidden] { 显示:无; } .expand { 显示:块; } .expand:before { 内容:'+';红色;位置:绝对;左:-1em; } .collapse { 显示:块; } .collapse:before { 内容:'-';红色;位置:绝对;左:-1em; } http://jax-ws.dev.java.net。 RI 的版本是 Metro/2.1 (branches/2.1-6728; 2011-02-03T14:14:58+0000) JAXWS-RI/2.2.3 JAXWS/2.2。 --> http://jax-ws.dev.java.net。 RI 的版本是 Metro/2.1 (branches/2.1-6728; 2011-02-03T14:14:58+0000) JAXWS-RI/2.2.3 JAXWS/2.2。 -->
----------------客户站点的跟踪--------------- ---------
线程“主”javax.xml.ws.soap.SOAPFaultException 中的异常:WSS1601:未满足安全要求 - 策略中配置了传输绑定,但传入消息未启用 SSL 在 com.sun.xml.internal.ws.fault.SOAP11Fault.getProtocolException(SOAP11Fault.java:178) 在 com.sun.xml.internal.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:119) 在 com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:108) 在 com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:78) 在 com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:107) 在 $Proxy30.hello(未知来源) 在 oanhejbwebserviceclient.OanhEJBWebServiceClient.hello(OanhEJBWebServiceClient.java:47) 在 oanhejbwebserviceclient.OanhEJBWebServiceClient.main(OanhEJBWebServiceClient.java:39) 原因:javax.xml.ws.soap.SOAPFaultException:WSS1601:未满足安全要求 - 策略中配置了传输绑定,但传入消息未启用 SSL 在 com.sun.xml.ws.security.opt.impl.util.SOAPUtil.createSOAPFault(SOAPUtil.java:223) 在 com.sun.xml.ws.security.opt.impl.util.SOAPUtil.getSOAPFaultException(SOAPUtil.java:215) 在 com.sun.xml.wss.provider.wsit.WSITServerAuthContext.validateRequest(WSITServerAuthContext.java:379) 在 com.sun.xml.wss.provider.wsit.WSITServerAuthContext.validateRequest(WSITServerAuthContext.java:263) 在 com.sun.enterprise.security.webservices.CommonServerSecurityPipe.processRequest(CommonServerSecurityPipe.java:173) 在 com.sun.enterprise.security.webservices.CommonServerSecurityPipe.process(CommonServerSecurityPipe.java:144) 在 com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:119) 在 com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:641) 在 com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:600) 在 com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:585) 在 com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:482) 在 com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:314) 在 com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:608) 在 com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:259) 在 com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:162) 在 org.glassfish.webservices.Ejb3MessageDispatcher.handlePost(Ejb3MessageDispatcher.java:120) 在 org.glassfish.webservices.Ejb3MessageDispatcher.invoke(Ejb3MessageDispatcher.java:91) 在 org.glassfish.webservices.EjbWebServiceServlet.dispatchToEjbEndpoint(EjbWebServiceServlet.java:200) 在 org.glassfish.webservices.EjbWebServiceServlet.service(EjbWebServiceServlet.java:131) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:848) 在 com.sun.grizzly.http.servlet.ServletAdapter$FilterChainImpl.doFilter(ServletAdapter.java:1002) 在 com.sun.grizzly.http.servlet.ServletAdapter$FilterChainImpl.invokeFilterChain(ServletAdapter.java:942) 在 com.sun.grizzly.http.servlet.ServletAdapter.doService(ServletAdapter.java:404) 在 com.sun.grizzly.http.servlet.ServletAdapter.service(ServletAdapter.java:354) 在 com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:168) 在 com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117) 在 com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:234) 在 com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822) 在 com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719) 在 com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013) 在 com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225) 在 com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) 在 com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) 在 com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) 在 com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) 在 com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) 在 com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) 在 com.sun.grizzly.ContextTask.run(ContextTask.java:71) 在 com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) 在 com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) 在 java.lang.Thread.run(Thread.java:662) 原因:com.sun.xml.wss.impl.XWSSecurityRuntimeException:WSS1601:未满足安全要求 - 策略中配置了传输绑定,但传入消息未启用 SSL 在 com.sun.xml.wss.impl.policy.verifier.MessagePolicyVerifier.verifyPolicy(MessagePolicyVerifier.java:125) 在 com.sun.xml.ws.security.opt.impl.incoming.SecurityRecipient.createMessage(SecurityRecipient.java:983) 在 com.sun.xml.ws.security.opt.impl.incoming.SecurityRecipient.validateMessage(SecurityRecipient.java:232) 在 com.sun.xml.wss.provider.wsit.WSITServerAuthContext.verifyInboundMessage(WSITServerAuthContext.java:586) 在 com.sun.xml.wss.provider.wsit.WSITServerAuthContext.validateRequest(WSITServerAuthContext.java:360)
-----------服务器站点的跟踪-------- ------------------
严重:WSS1601:未满足安全要求 - 策略中配置了传输绑定,但传入消息未启用 SSL 严重:WSITPVD0035:验证入站消息中的安全性时出错。 com.sun.xml.wss.impl.XWSSecurityRuntimeException:WSS1601:未满足安全要求 - 在策略中配置了传输绑定,但传入消息未启用 SSL 在 com.sun.xml.wss.impl.policy.verifier.MessagePolicyVerifier.verifyPolicy(MessagePolicyVerifier.java:125) 在 com.sun.xml.ws.security.opt.impl.incoming.SecurityRecipient.createMessage(SecurityRecipient.java:983) 在 com.sun.xml.ws.security.opt.impl.incoming.SecurityRecipient.validateMessage(SecurityRecipient.java:232) 在 com.sun.xml.wss.provider.wsit.WSITServerAuthContext.verifyInboundMessage(WSITServerAuthContext.java:586) 在 com.sun.xml.wss.provider.wsit.WSITServerAuthContext.validateRequest(WSITServerAuthContext.java:360) 在 com.sun.xml.wss.provider.wsit.WSITServerAuthContext.validateRequest(WSITServerAuthContext.java:263) 在 com.sun.enterprise.security.webservices.CommonServerSecurityPipe.processRequest(CommonServerSecurityPipe.java:173) 在 com.sun.enterprise.security.webservices.CommonServerSecurityPipe.process(CommonServerSecurityPipe.java:144) 在 com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:119) 在 com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:641) 在 com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:600) 在 com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:585) 在 com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:482) 在 com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:314) 在 com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:608) 在 com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:259) 在 com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:162) 在 org.glassfish.webservices.Ejb3MessageDispatcher.handlePost(Ejb3MessageDispatcher.java:120) 在 org.glassfish.webservices.Ejb3MessageDispatcher.invoke(Ejb3MessageDispatcher.java:91) 在 org.glassfish.webservices.EjbWebServiceServlet.dispatchToEjbEndpoint(EjbWebServiceServlet.java:200) 在 org.glassfish.webservices.EjbWebServiceServlet.service(EjbWebServiceServlet.java:131) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:848) 在 com.sun.grizzly.http.servlet.ServletAdapter$FilterChainImpl.doFilter(ServletAdapter.java:1002) 在 com.sun.grizzly.http.servlet.ServletAdapter$FilterChainImpl.invokeFilterChain(ServletAdapter.java:942) 在 com.sun.grizzly.http.servlet.ServletAdapter.doService(ServletAdapter.java:404) 在 com.sun.grizzly.http.servlet.ServletAdapter.service(ServletAdapter.java:354) 在 com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:168) 在 com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117) 在 com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:234) 在 com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822) 在 com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719) 在 com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013) 在 com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225) 在 com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) 在 com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) 在 com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) 在 com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) 在 com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) 在 com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) 在 com.sun.grizzly.ContextTask.run(ContextTask.java:71) 在 com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) 在 com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) 在 java.lang.Thread.run(Thread.java:662)
【问题讨论】:
-
这应该可以让您更深入地了解问题:blogs.oracle.com/arungupta/entry/totd_22_java_se_client
-
我看不出将 WSDL 发布为“由 Web 浏览器查看”的意义。 WSDL 不被 Web 浏览器查看,并且不包含 CSS 语句。没有它们,您的帖子会更清晰。
标签: web-services ssl glassfish