Tag: jax ws

使用自顶向下方法的Eclipse入门JAX-WS教程

我正在寻找一个与Eclipse一起使用的JAX-WS教程。 我特别想要的是一些使用自上而下的方法,你有一个wsdl文件的url并运行wsgen来生成你的存根。 谢谢!

如何在java中添加soap标头

我有来自oracle的NO-.net webservice要访问我需要添加soap标头。 如何在java中添加soap标头? Authenticator.setDefault(new ProxyAuthenticator(“username”, “password”)); System.getProperties().put(“proxySet”, “true”); System.setProperty(“http.proxyHost”, “IP”); System.setProperty(“http.proxyPort”, “port”); proxy = new RegPresMed_Service(new URL(“webservice”)).getRegPresMed(); ((BindingProvider) proxy).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, “realwebservice”); ((BindingProvider) proxy).getRequestContext().put(“com.sun.xml.ws.request.timeout”, new Integer(60000)); ((BindingProvider) proxy).getRequestContext().put(BindingProvider.USERNAME_PROPERTY, “webserviceUsername”); ((BindingProvider) proxy).getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, “webservicePassword”); 这有必要吗? ((BindingProvider) proxy).getRequestContext().put(BindingProvider.USERNAME_PROPERTY, “webserviceUsername”); ((BindingProvider) proxy).getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, “webservicePassword”); 我的肥皂标题是这样的: username password randomnaumber== dateCreated

Metro vs Java的JAX-WS?

Java的JAX-WS和Metro有什么区别? 它们是两个不同的JAX-WS实现相同吗? 根据我的研究,JAX-WS已经是JDK 6的一部分。但是,JAX-WS没有附带标准的JDK包,所以我找了一个Java EE jar。 但是,似乎Oracle不承载已编译的Java EE jar,而是提供Glassfish作为Java EE服务器。 我能够在Glassfish上运行我的Web服务。 Glassfish使用什么JAX-WS实现? 由于它托管在Oracle上,我假设它使用Java的JAX-WS实现,它应该是JDK 1.6的一部分? 我的假设是正确的吗? 另外,要运行基于JAX-WS的Web服务,我需要下载JAX-WS jar。 我找到了Metro 。 但在它的页面上,我看到地铁的链接是Glassfish的子链接。 所以我现在很困惑。 Glassfish使用Metro吗? 或者Glassfish使用Java的JAX-WS? Metro和Java的JAX-WS是一样的吗?

用户名和密码位于数据库中时的JAX-WS和BASIC身份validation

我是JAX-WS的新手,有一件事我不明白。 有很多关于如何设置JAX-WS安全性的教程,但几乎所有情况下BindingProvider.USERNAME_PROPERTY和BindingProvider.PASSWORD_PROPERTY都存储在一些.xml文件中(取决于我认为的容器) – 它们是“硬编码的”那是。 这就是我没有得到的。 如何通过将BindingProvider.USERNAME_PROPERTY和BindingProvider.PASSWORD_PROPERTY与数据库中的用户名和密码进行比较来validationWeb服务客户端? 我尝试在客户端设置BindingProvider.USERNAME_PROPERTY和BindingProvider.PASSWORD_PROPERTY,如下所示: ShopingCartService scs = new ShopingCartService(wsdlURL, name); ShopingCart sc = scs.getShopingCartPort(); Map requestContext = ((BindingProvider)sc).getRequestContext(); requestContext.put(BindingProvider.USERNAME_PROPERTY, userName); requestContext.put(BindingProvider.PASSWORD_PROPERTY, password); sc.someFunctionCall(); 然后,在服务器端检索如下: @Resource WebServiceContext wsContext; @WebMethod public void someFunctionCall() { MessageContext mc = wsContext.getMessageContext(); mc.get(BindingProvider.USERNAME_PROPERTY); mc.get(BindingProvider.PASSWORD_PROPERTY); } 但我总是得到null,我没有在xml中设置任何东西,web服务工作得很好,除了我不能得到那些变量:( 我在java 1.6,tomcat 6和JAX-WS上运行 。 任何有关使用数据库密码validation用户的帮助都非常感谢,谢谢。

JAX-WS,身份validation和授权 – 如何?

在Web服务中进行身份validation和授权的最佳方法是什么? 我正在开发一组Web服务,需要基于角色的访问控制。 使用metro – SOAP,没有EJB的简单java。 我想使用用户名和密码对用户进行一次身份validation,以便与数据库进行匹配。 在随后的电话中。 我想使用某种会话管理。 可以是在登录时检索到客户端的某个会话ID,以便在所有呼叫中显示。 至今: 使用数据库读取身份validation – 但我想要应用程序级别validation; 使用jax-ws读取应用程序身份validation – 但我不想每次都执行身份validation机制; 我想我可以使用SOAP处理程序拦截所有消息,并使用消息附带的一些会话标识符令牌在hander中执行授权控制,该令牌可以与保存在数据库中的标识符匹配,登录Web方法。 编辑: 我还有一些问题: 如何知道被调用的Web方法的名称? 我应该使用什么样的令牌? 如何在通话之间传递此令牌? 编辑2 因为@ ag112回答: 我正在使用Glassfish。 我使用WS-Policy和WS-Security来加密和签名消息。 使用相互证书身份validation。 我想在应用程序之间补充此消息级别的安全性,同时在消息级别对用户进行身份validation和授权。 我只是在开发服务,我几乎不知道客户,只是他们可以用不同的语言创建。 在这一点上,我认为最重要的是做我需要做的事情来validation和validation用户,我是客户端应用程序最简单的实现方式。

如何在JAX-WS客户端中禁用证书validation?

如何使用javax.xml.ws.Service在JAX-WS客户端中禁用证书validation? 我尝试在SSLSocketFactory中创建一个完全信任的TrustManager,并尝试将其与BindingProvider绑定 SSLContext sc = SSLContext.getInstance(“SSL”); sc.init(null, trustAllCerts, new java.security.SecureRandom()); Map ctxt = ((BindingProvider) wsport ).getRequestContext(); ctxt.put(JAXWSProperties.SSL_SOCKET_FACTORY, sc.getSocketFactory()); 但我仍然得到Exception: unable to find valid certification path to requested target 但它只在我使用时有效 HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); 或者有没有办法让javax.xml.ws.Service使用我创建的HttpsURLConnection ?

wsimport生成的客户端如何工作?

在此之前,我想让您知道我已经可以连接到Web服务服务器了。 我问这个问题是因为我希望深入了解wsimport生成的客户端是如何工作的。 根据我的研究,wsimport使用JAXWS。 请注意,我不了解JAXWS。 我使用wsimport生成了我的客户端。 我使用的WSDL来自Axis2 Web服务,由Axis2自动生成。 下面的类是wsimport的结果: 在com.datamodel.xsd DataBeanRequest.java DataBeanResponse.java ObjectFactory.java package-info.java 在com.service MyWebService.java MyWebServicePortType.java MyMethod.java MyMethodResponse.java ObjectFactory.java package-info.java 使用上面的类,我可以告诉com.datamodel.xsd包含Web服务服务器使用的bean(不包括ObjectFactory和package-info )。 同时, MyMethod和MyMethodResponse也是用于设置Web服务方法/操作的请求和响应参数的bean。 以下是我的问题:(如果你不知道我的一些问题的答案,你真的不必回答所有问题。:)请随时分享你认为我可能会觉得有用的任何信息。) 我是否正确 我的上述假设是否正确? 其他课程的function是什么? 我检查了MyWebService ,它包含一个注释,指的是我用来生成客户端的WSDL的绝对位置。 在客户端中指定wsdllocation的相关性是什么? 客户如何使用该信息? 我注意到Web服务的实际URL未在生成的任何类中声明。 客户如何知道需要连接的位置? 是否对WSDL文件进行了注释,以便客户端可以在连接时读取WSDL文件上的URL? 如果是这样,那么是否意味着在必须建立新连接时始终读取WSDL文件? 由于我需要编译我的应用程序并将其安装在不同的服务器上,因此将无效。 我可以将它设置为相对路径而不是绝对路径吗? 怎么样? (答案:是的,它可以设置为相对路径wsdllocation命令有一个wsdllocation属性,其中可以指定wsdllocation的值。) 如果我需要连接到HTTPS,该怎么办? 如何设置服务器证书? 使用wsimport生成客户端时以及使用Axis2或Apache CXF生成客户端时有什么不同。

JAXWS Soap Handler大型MTOM附件

IBM SOAP 7和8中的JAXWS实现在肥皂处理程序和大型MTOM附件方面似乎存在一些问题。 当在SOAPMessageContext对象上调用getMessage()时,似乎将整个消息(包括所有附件二进制内容)读入内存。 这很容易导致JVM耗尽可用内存。 @Override public boolean handleMessage(SOAPMessageContext context) { SOAPMessage soapMsg = context.getMessage(); … } 在上面的代码片段中,如果传入的请求附件大于JVM中可用的可用内存量,则context.getMessage()可能导致内存不足exception。 如何在不触发此不良function的情况下访问SoapHeader元素? 我看到SOAPMessageContext类有一个getHeaders(…)方法,但我不确定如何使用它。 我特别不确定要为JAXBContext传递什么。 任何人都可以提供一个例子或解释如何使用这种方法吗? 这是另一个相关的stackoverflow文章: 带有大消息的JAX-WS SoapHandler:OutOfMemoryError

从Java Web服务客户端获取原始XML响应

我试图从Web服务获取原始XML响应,而不是通常的POJO集。 我正在使用我从WSDL和一些模式生成的webservice客户端(所以我可以访问客户端的代码)。 客户端是在RAD 7.5中生成的,我认为使用JAX-WS。 我一直在查看客户端代码本身,但我甚至不确定客户端代码是否处理原始XML或者是否将其传递给其他库。

无法使用Glassfish上的jax-ws进行身份validation

我一直在尝试创建一个使用SSL进行基本身份validation的java服务。 配置SSL非常简单,但配置身份validation更成问题。 每当我尝试调用标有@RolesAllowed注释的方法时,我都会收到以下exception… Exception in thread “AWT-EventQueue-0” javax.xml.ws.soap.SOAPFaultException: javax.ejb.EJBAccessException at com.sun.xml.internal.ws.fault.SOAP11Fault.getProtocolException(SOAP11Fault.java:178) at com.sun.xml.internal.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:111) at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:108) at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:78) at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:129) at $Proxy30.reverseString(Unknown Source) at securitytestclient.SecurityTestClient.reverseStringSOAP(SecurityTestClient.java:305) at securitytestclient.SecurityTestClient.buttonReverseActionPerformed(SecurityTestClient.java:217) at securitytestclient.SecurityTestClient.access$000(SecurityTestClient.java:20) at securitytestclient.SecurityTestClient$1.actionPerformed(SecurityTestClient.java:72) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.plaf.basic.BasicButtonListener$Actions.actionPerformed(BasicButtonListener.java:303) at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1661) at javax.swing.JComponent.processKeyBinding(JComponent.java:2879) at javax.swing.JComponent.processKeyBindings(JComponent.java:2926) at javax.swing.JComponent.processKeyEvent(JComponent.java:2842) at java.awt.Component.processEvent(Component.java:6282) at java.awt.Container.processEvent(Container.java:2229) at java.awt.Component.dispatchEventImpl(Component.java:4861) at […]