Tag: jax ws

使用大型wsdl,我们可以修剪它吗?

我的webservice提供者给了我一个大的WSDL文件,但是我们将只使用一些函数。 我相信大型WSDL会对应用程序性能产生负面影响。 我们在客户端应用程序中使用webservice, 启动时间和内存使用是问题。 大型WSDL意味着jax-ws需要更长时间才能进行绑定,并且将为stub类占用更多内存。 是否有可能将WSDL文件修剪为轻量级版本? 有没有用于此目的的工具? 我认为我的webservice提供程序不会为我们生成另一个WSDL。 我们可能必须在构建脚本中自动执行此操作 。

无法初始化类com.sun.xml.internal.ws.fault.SOAPFaultBuilder

我在maven库中使用Jaxb-impl-2.1.3.jar ..每个东西在pom条目中看起来都很好..如果有人遇到这个错误请求给我一个想法.. java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) at org.springframework.aop.aspectj.AspectJAfterAdvice.invoke(AspectJAfterAdvice.java:42) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:80) at Caused by: java.lang.NoClassDefFoundError: Could not initialize class com.sun.xml.internal.ws.fault.SOAPFaultBuilder at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:107) 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:107)

记录jax-ws http请求和响应

我需要在JAX-WS WebService调用中记录完整的http请求和响应。 对于请求,我需要请求标头和正文以及响应,响应标头和正文。 经过一番研究,我发现我可以通过该属性获取此信息: -Dcom.sun.xml.ws.transport.http.client.HttpTransportPipe.dump=true 并显示我需要的信息,但它将其转储到控制台,我需要将其存储在具有内部请求ID的数据库中。 我试图实现一个处理程序: public class LoggingHandler implements SOAPHandler { @Override public boolean handleMessage(SOAPMessageContext context) { Boolean outbound = (Boolean) context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY); if (outbound) { System.out.println(“SOAP outbound!!!!!”); Map<String, List> responseHeaders = (Map<String, List>) context .get(SOAPMessageContext.HTTP_RESPONSE_HEADERS); try { String headers = getHeaders(responseHeaders); System.out.println(headers); String body = getBody(context.getMessage()); System.out.println(body); } catch (Exception ex) { // […]

如何从javax.ws.rs.core.Response响应中检索JSON响应?

我正在向API请求并获得200的响应状态代码。 api的响应包括json响应。 import javax.ws.rs.core.Response; Response response = webclient.post(SomeReqString); 如何从Web客户端响应中将json响应检索为字符串?

从Java使用.net WCF服务

我是Java的新手,并且认为在我已经熟悉的.NET WCF服务之上实现客户端应用程序是一个很好的学习练习。 我从最新的JAX-WS( https://jax-ws.java.net/ )运行wsimport.bat来生成客户端代理,但是我仍然坚持认证部分。 WCF服务使用应用程序级别用户名/密码进行身份validation。 我不知道在哪里提供凭证。 在C#中,对于此WCF服务,我只需要添加服务引用,并执行以下操作: var client = new ServiceClient(); client.ClientCredentials.UserName.UserName = “username”; client.ClientCredentials.UserName.Password = “password”; client.DoSomething(); 从Fiddler,调用client.DoSomething()会产生以下请求: 2013-05-20T01:34:28.353Z 2013-05-20T01:39:28.353Z username password 这是我目前正在使用的Java: SomeService service = new SomeService(); ISomeService port = service.getBasicHttpBindingISomeService(); DoSomethingResponse response = port.getDoSomething(); 这会产生以下请求: 它缺少安全节点,因此我不确定如何在Java端设置它。 我错过了什么? 我不是百分之百地使用JAX-WS,如果有更好的替代方案来满足我的需求。 但是,无法修改WCF服务以重新配置,因为它无法实现。 WSDL: 我在Windows 8 x64上使用最新的JDK

在Eclipse中创建一个简单的JAX-WS WebService

我正在尝试在eclipse中创建一个简单的Web服务。 首先,我创建了一个空的java项目,并在src文件夹中添加了以下三个文件 Greeting.java package com.alfaisaliah; import javax.jws.WebService; import javax.jws.WebMethod; @WebService public interface Greeting { @WebMethod String sayHello(String name); } GreetingImp.java package com.alfaisaliah; import javax.jws.WebService; @WebService(endpointInterface=”com.alfaisaliah.Greeting”) public class GreetingImp implements Greeting { @Override public String sayHello(String name) { return “Hello ” + name; } } WSPublisher package com.alfaisaliah; import javax.xml.ws.Endpoint; public class WSPublisher { public static […]

java.lang.ClassCastException:com.sun.xml.bind.v2.runtime.JAXBContextImpl无法强制转换为com.sun.xml.bind.api.JAXBRIContext

我创建了一个jaxws Web服务。 我完全关注了url 服务很好,没有任何错误。 但是当请求命中它时服务器有错误。 SEVERE: caught throwable java.lang.ClassCastException: com.sun.xml.bind.v2.runtime.JAXBContextImpl cannot be cast to com.sun.xml.bind.api.JAXBRIContext at com.sun.xml.ws.db.glassfish.JAXBRIContextFactory.newContext(JAXBRIContextFactory.java:74) at com.sun.xml.ws.spi.db.BindingContextFactory.create(BindingContextFactory.java:149) at com.sun.xml.ws.message.jaxb.JAXBMessage.create(JAXBMessage.java:160) at com.sun.xml.ws.fault.SOAPFaultBuilder.createSOAP11Fault(SOAPFaultBuilder.java:433) at com.sun.xml.ws.fault.SOAPFaultBuilder.createSOAPFaultMessage(SOAPFaultBuilder.java:210) 我检查了stackoverflow和许多其他网站都说jar文件冲突。 我用的是java-6-openjdk。 以下是jetty服务器中的jar文件列表。 gmbal-API only.jar HA-api.jar文件 JAXB-core.jar添加 JAXB – impl.jar中 JAXWS-的rt.jar 管理-api.jar文件 政策2.3.1.jar STAX-ex.jar streambuffer-1.5.1.jar 由于上面的jar子不起作用,我尝试过 去这里 下载JAX-WS RI发行版。 但那些jar子给出了同样的错误。

maven-cxf-codegen-plugin使用Jaxb绑定为所有生成的类添加inheritance

我正在使用Apache CXF的cxf-codegen-plugin将wsdl转换为java对象。 我指定了一个绑定文件来添加额外的jaxb处理。 我希望所有这些文件都从接口inheritance(或扩展抽象类)。 我的问题是,虽然我可以使用一个生成的文件来使用它 example.Dao 这将使sampleObj实现example.Dao。 我不知道如何处理所有复杂类型(生成的类)。 不为每个类重复上述绑定(> 100) 我试过了, 但它不起作用。 这是我的maven插件,如果它有帮助: org.apache.cxf cxf-codegen-plugin ${cxf.version} generate-resources process-resources ${project.build.directory}/generated/ ${wsdl_location} classpath:wsdl.wsdl <!–classpath:wsdl.wsdl–> -autoNameResolution -xjc-Xfluent-api -xjc-Xbg -verbose -validate -mark-generated -xjc-Xinheritance -p com.example ${project.build.directory}\classes\jax-ws_binding.xjb wsdl2java org.jvnet.jaxb2_commons jaxb2-fluent-api 3.0 org.jvnet.jaxb2_commons jaxb2-basics 0.6.5 org.jvnet.jaxb2_commons jaxb2-basics-annotate 0.6.5 org.jvnet.jaxb2_commons jaxb2-basics-runtime 0.6.5 org.apache.cxf.xjcplugins cxf-xjc-boolean 2.7.0 org.apache.cxf cxf-api ${cxf.version}

如何将jax-ws服务部署到eclipse或tomcat?

作为一名Web服务初学者,我已经尝试了两周的时间来获得一个使用maven,eclipse和tomcat的hello world webservice。 我放弃了尝试让任何代码/ wsdl生成器工作,我按照本教程http://myarch.com/create-jax-ws-service-in-5-minutes手动编写一个例子,这是辉煌。 这导致4个类文件和一个WSDL文件。 所以我的愚蠢问题是如何在eclipse和/或tomcat中“运行”服务? 我尝试将它们部署为webapp,但没有任何乐趣 – 在web.xml中没有任何内容告诉servlet引擎Web服务是否存在,所以我想它永远不会工作。 我必须在tomcat中有一个特殊的Web服务容器(例如axis2,metro或CXF),并部署到那个? 或者它可以运行一些jax-wsjar+神秘配置? 我不想安装到tomcat metro(使用ant,并且设计为glassfish)或axis2(使用ant,大多数人似乎不推荐)。 我查看了CXF,但无法在他们的网站上找到如何在没有弹簧的情况下在tomcat(或eclipse)上安装/配置它。 我把CFX jar放在maven依赖项中,然后安装了eclipse插件,但这个deoesnt让你更接近实际运行一个没有神秘配置胶水的web服务。 CXF似乎与spring有关,这对我们来说是一个很大的减号,因为我们不使用弹簧(或需要它的任何function)。 我注意到helios wtp有一些名为JSR-109的Web服务项目。 这只是java RPC,还是它支持完整的SOAP websiervice系统,是否值得尝试解决? 任何建议都非常欢迎。 我必须搜索1000页以搜索Web服务的圣杯 – 即如何创建并部署到tomcat端到端。 它应该是这么难吗?

使用jaxws-maven-plugin控制JAX-WS wsdlLocation属性值(绝对路径)

我有一个JAX-WS驱动的Web服务,其WSDL我们从另一个Maven模块(我称之为ws-consumer )生成Web服务客户端。 无论好坏,我们将“已发布的WSDL”(服务在发布时保存/生成的WSDL和XSD的版本)复制到ws-consumer src/wsdl文件夹中,然后使用jaxws-maven-plugin org.jvnet使用jaxws:wsimport生成客户端jaxws:wsimport具有以下(截断)配置: org.jvnet.jax-ws-commons jaxws-maven-plugin 2.1 wsimport src/main/resources/META-INF/wsdl/ MyWS/MyWS.wsdl 现在,生成的客户端代码在类级别应用了以下注释: @WebServiceClient(name = “MyWS”, targetNamespace = “http://myws/blah”, wsdlLocation = “**file:/C:/some/absolute/path/src/main/resources/META-INF/wsdl/MyWS/MyWS.wsdl”**) 强调我的 正如您所希望看到的那样, wsdlLocation属性值具有硬编码的绝对路径,在部署服务时该路径将不正确。 有没有什么办法可以通过将它设置为META-INF/wsdl/MyWS/MyWS.wsdl或其他一些值来“控制”它?