Tag: jax ws

JAX-WS:为什么嵌套元素在“”命名空间中?

玩具服务如下 @WebService(targetNamespace=”http://www.example.org/stock”) @SOAPBinding(style=Style.RPC,parameterStyle=ParameterStyle.WRAPPED) public class GetStockPrice { @WebMethod(operationName=”GetStockPrice”,action=”urn:GetStockPrice”) @WebResult(partName=”Price”) public Double getPrice( @WebParam(name=”StockName”) String stock ) { return null; } } JAX-WS生成的客户端创建SOAP消息,其中StockName参数没有命名空间: IBM 我希望并希望StockName生成为 IBM 即在目标名称空间中,而不是在匿名名称空间中(ns2不是默认的,据我所知,从消息中可以看出)。 我想知道如何让JAX-WS将目标命名空间添加到消息的嵌套元素中? 尝试将名称空间指定给WebParam注释时没有任何改变,因为在使用RPC时会忽略此参数。 或者……这是否意味着RPC风格的参数始终是匿名的? UPDATE 傻我。 部分解决了。 我必须做的是 style = Document,为元素启用目标命名空间 param style = Wrapped,以启用顶级元素 为WebParam指定目标命名空间(为什么不使用服务?文档说应该使用服务命名空间) 那是: @WebService(targetNamespace=”http://www.example.org/stock”) @SOAPBinding(style=Style.DOCUMENT,parameterStyle=ParameterStyle.WRAPPED) public class GetStockPrice { @WebMethod(operationName=”GetStockPrice”,action=”urn:GetStockPrice”) @WebResult(partName=”Price”) public Double getPrice( @WebParam(name=”StockName”,targetNamespace=”http://www.example.org/stock”) String […]

在Web容器外的Java 6中使用Guice 3和JAX-WS

我们有一种情况,我们使用基于JSR-330的注入来配置我们的独立Java 6应用程序,这非常适合在所有层中获取配置参数。 我们还使用JAX-WS Web服务很长一段时间,在Web容器中使用Java 5的第一个独立Metro分发,但是使用Java 6我们只使用Endpoint类来减少占用空间。 所以现在我有一个情况 一个独立的Java 6应用程序 – 没有servlet容器(Jetty,Tomcat) Guice 3 Injector按照我喜欢的方式设置。 处理我的@javax.jws.WebService注释类的Endpoint ,它将我的方法公开为Web服务。 我希望Web服务方法要么透明地处理它们的@Inject字段,要么访问注入器。 我可以从主方法中获取它作为静态字段,但我想要一个更清洁的解决方案。 有什么建议么? (我从JAX-WS和Guice 3了解到http://jax-ws-commons.java.net/guice/模块不能与Guice 3一起使用,建议的解决方法是特定于Tomcat) JSR-250 @Resource注释在这里有用吗?

如何在jboss上以编程方式设置jax-ws客户端请求超时?

我正在尝试为使用jaxws-maven-plugin生成的jax-ws-webservice-client设置请求(和连接)超时。 在tomcat或jetty下运行我的应用程序时,超时工作正常,但是当在jboss下部署​​时它不会“占用”。 private void setRequestAndConnectionTimeout(Object wsPort) { String REQUEST_TIMEOUT = BindingProviderProperties.REQUEST_TIMEOUT; // “com.sun.xml.ws.request.timeout”; ((BindingProvider) wsPort).getRequestContext().put(REQUEST_TIMEOUT, timeoutInMillisecs); ((BindingProvider) wsPort).getRequestContext().put(JAXWSProperties.CONNECT_TIMEOUT, timeoutInMillisecs); } 为JBoss执行此操作的正确方法是什么?

等效于wsimport的org.apache.axis.components.net.SunFakeTrustSocketFactory

当我使用Apache Axis生成webservice客户端存根时,我通过调用以下方法使用客户端存根在我的代码中禁用服务器证书信任检查 AxisProperties.setProperty(“axis.socketSecureFactory”, “org.apache.axis.components.net.SunFakeTrustSocketFactory”); 如何禁用通过运行wsimport生成的客户端存根的信任检查? 我在运行一些测试代码时使用它。

如何以编程方式设置JAX-WS客户端的SSLContext?

我正在使用具有浏览器客户端的分布式应用程序中的服务器,并且还参与与第三方的服务器到服务器通信。 我的服务器有一个CA签名证书,让我的客户端使用HTTP / S和XMPP(安全)使用TLS(SSL)通信进行连接。 这一切都很好。 现在,我需要通过HTTPS / SSL使用JAX-WS安全地连接到第三方服务器。 在此通信中,我的服务器在JAX-WS交互中充当客户端,并且我已经由第三方签署了客户端证书。 我尝试通过标准系统配置( -Djavax.net.ssl.keyStore=xyz )添加新的密钥库,但我的其他组件明显受此影响。 虽然我的其他组件使用专用参数进行SSL配置( my.xmpp.keystore=xxx, my.xmpp.truststore=xxy, … ),但似乎他们最终使用全局SSLContext 。 (配置命名空间my.xmpp.似乎表示分离,但事实并非如此) 我也尝试将我的客户端证书添加到我的原始密钥库中,但是 – 我的其他组件似乎也不喜欢它。 我认为我唯一的选择是以编程方式挂钩到JAX-WS HTTPS配置,以便为客户端JAX-WS交互设置密钥库和信任库。 有关如何做到这一点的任何想法/指示? 我找到的所有信息都使用了javax.net.ssl.keyStore方法,或者设置了全局SSLContext ,我想这将最终出现在同一个confilc中。 我得到的最接近的东西是这个旧的错误报告请求我需要的function: 添加支持将SSLContext传递给JAX-WS客户端运行时 任何需要?

Webservice – 客户端服务实例化

您知道创建Web服务客户端服务实例的成本是多少? JavaWebService service = new JavaWebService(); SomePort port = service.getJavaWebServicePort(); 创建服务一次,然后在multithreading环境(webapp)中重用相同的端口并不危险? 请注意,端口getPort和端口本身不是线程安全的,但是如果服务成本高昂,每次创建服务时都可能会产生问题。 任何的想法 ? 谢谢

使用嵌入式Jetty 7发布JAX-WS端点

任何人都可以帮忙吗? 我想使用嵌入式Jetty 7作为端点。 这是我试过的: public class MiniTestJetty { @WebService(targetNamespace = “http”) public static class Calculator { @Resource WebServiceContext context; public int add(int a, int b) { return a + b; } } public static void main(String[] args) throws Exception { int port = 8080; Server server = new Server(port); Calculator calculator = new Calculator(); Endpoint.publish(“http://localhost:” […]

使用JAX-WS构建大型MTOM / XOP消息

我有一个关于将MTOM / XOP与JAX-WS一起使用的问题。 我正在编写一个发送大量二进制数据的Web服务。 客户端请求许多文件,服务器返回响应中的文件。 我能够正确地构建响应,以便正确实现XOP,但我遇到了与内存相关的问题,因为它在发送之前将整个响应存储在内存中。 此Web服务发送的文件可能会变得非常大(例如,giga-bytes large),因此将响应存储在内存中不是一种选择。 这个Oracle网站 (以及这个网站 )似乎解决了这个问题,但我只是不理解它。 我认为他们使用DataHandler对象来传输请求/响应,但我无法弄清楚它们如何实例化它。 我正在使用wsimport从现有的WSDL生成我的JAX-WS类文件。 我正在使用JAX-WS RI 2.1.6和Java 6。 我如何在建立响应时发送响应,而不必先将所有响应存储在内存中? 在此先感谢您的帮助。 更新12月17日:我将以下属性添加到保存二进制数据的WSDL中的schema元素。 这会导致wsimport将DataHandler对象添加到JAXB类。 然后可以将FileDataHandler添加到响应中,而不是添加文件的全部内容,从而允许服务器流式传输每个文件的内容,而不是将它们全部保存在内存中: xmlns:xmime=”http://www.w3.org/2005/05/xmlmime” xmime:expectedContentTypes=”application/octet-stream” 因此,服务器现在正确地构建响应,并且客户端在收到请求时正确地将每个文件保存到磁盘。 但是,客户端仍然会出于某种原因将整个响应读入内存。 服务器代码(SIB): @MTOM @StreamingAttachment(parseEagerly = true, memoryThreshold = 4000000L) @WebService(…) public class DownloadFilesPortTypeImpl implements DownloadFilesPortType { @Override public FileSetResponseType downloadFileSet(FileSetRequestType body) { FileSetResponseType response = new FileSetResponseType(); for (FileRequest freq […]

在Weblogic 12.1.3上找不到文件metro-default.xml

我们目前正在运行WebLogic 12.1.2。 在这种环境下我们的应用运行良好。 我们现在想要的是将我们的应用程序同步到WebLogic 12.1.3环境。 但我们正面临着我们使用的Web服务的问题。 在新版本中,服务器抛出一个exception,说“未找到”默认配置文件[metro-default.xml]“。 我试图在这个文件上找到一些东西,但什么都没有。 PS:我们不使用Metro,我们使用WebLogic默认的JAX-WS堆栈。 该应用程序部署为WAR文件。 这是exception的堆栈 java.lang.IllegalStateException: MASM0001: Default configuration file [ metro-default.xml ] was not found at com.sun.xml.ws.assembler.MetroConfigLoader.init(MetroConfigLoader.java:142) at com.sun.xml.ws.assembler.MetroConfigLoader.(MetroConfigLoader.java:119) at com.sun.xml.ws.assembler.TubelineAssemblyController.getTubeCreators(TubelineAssemblyController.java:122) at com.sun.xml.ws.assembler.MetroTubelineAssembler.createServer(MetroTubelineAssembler.java:173) at com.sun.xml.ws.server.WSEndpointImpl.(WSEndpointImpl.java:193) at com.sun.xml.ws.server.EndpointFactory.create(EndpointFactory.java:337) at com.sun.xml.ws.server.EndpointFactory.create(EndpointFactory.java:332) at com.sun.xml.ws.server.EndpointFactory.createEndpoint(EndpointFactory.java:164) at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:577) at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:560) at com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parseAdapters(DeploymentDescriptorParser.java:303) at com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parse(DeploymentDescriptorParser.java:179) at com.sun.xml.ws.transport.http.servlet.WSServletContextListener.parseAdaptersAndCreateDelegate(WSServletContextListener.java:131) at com.sun.xml.ws.transport.http.servlet.WSServletContextListener.contextInitialized(WSServletContextListener.java:152) at weblogic.servlet.internal.EventsManager$FireContextListenerAction.run(EventsManager.java:678) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) at […]

找不到taskdef类com.sun.tools.ws.ant.WsImport后面的“java web services tutorial”

我在许多不同的地方看到了同样的问题,即使经过大量的谷歌搜索,我也无法解决它。 我想要做的事情(更大的图片)是通过java网络服务教程 ,看起来有点不同步, 特别是在这里 ,当我尝试编译时,我收到以下消息: C:\ javaeetutorial5 \ examples \ jaxws \ common \ targets.xml:26:找不到taskdef类com.sun.tools.ws.ant.WsImport 我尝试了许多不同的放置jar子或改变环境变量的组合,但没有结果。 有成功的故事吗? 完整生成错误消息如下: 建筑失败 C:\ javaeetutorial5 \ examples \ jaxws \ helloservice \ build.xml:4:执行此行时发生以下错误: C:\ javaeetutorial5 \ examples \ jaxws \ common \ targets.xml:26:taskdef无法找到类com.sun.tools.ws.ant.WsImport所需的类:org / apache / tools / ant / DynamicConfigurator 使用类加载器AntClassLoader [C:\ Program Files(x86)\ Java \ jdk1.6.0_23 \ […]