由于WS客户端端口的初始化成本太高,我们希望重用相同的实例.我们还希望在每次调用之前在BindingProvider/RequestContext中设置不同的值.最初我们想这样做:
MyService service = new MyService(wsdlURL, name);
MyPort myPort = service .getMyServicePort();
Run Code Online (Sandbox Code Playgroud)
然后,在每次调用之前执行此操作:
Map requestContext = ((BindingProvider)myPort ).getRequestContext();
requestContext.put(BindingProvider.USERNAME_PROPERTY, uName);
requestContext.put(BindingProvider.PASSWORD_PROPERTY, pWord);
myPort.someFunctionCall();
Run Code Online (Sandbox Code Playgroud)
我的问题是,这个代码线程安全吗?JAX-WS文档似乎表明它不是线程安全的.但是,如果采取预防措施,CXF似乎也是如此.如果特别是JAX-WS和Metro不是线程安全的,有没有办法确保线程安全而不同步访问端口或ws操作?
我正在开发一个基于Java SOAP的webservice应用程序,我将stdout写入文本文件作为日志供我们参考.该文件正在大量增长,因此我需要检查文件的大小...例如,如果文件大小超过10 Mb,我必须创建另一个文件.
像这样,我必须创建10个文件,一个接一个地旋转直到十个文件.达到十个文件后,我必须删除起始文件并重新开始创建...
如何在no之后删除文件.文件将变为10?
我最近一直在教自己WCF,我甚至用WCF编写了一些生产服务.但是直到最近我才真正看到过WCF.
我知道"代理"设计模式的想法.我也知道在ASMX Web服务中使用代理.但我很难理解WCF代理是什么以及如何使用它.我已经彻底查看了有关WCF的MSDN文档,但我仍然没有理解使用代理与WCF服务的大局.
我正在尝试使用Eclipse Juno SR2向导创建Web服务客户端.该服务已正确部署并在Glassfish 3.1.2服务器上运行,我可以看到WSDL文件或使用Axis创建客户端.如果我尝试使用CXF(尝试过CXF 2.6.8和2.7.5)在为GLassfish 3.1.2创建的动态Web项目中创建客户端,则会出现问题:
Loading FrontEnd jaxws ...
Loading DataBinding jaxb ...
wsdl2java -client -d /Users/dude/Documents/SOA/workspace/gf/.cxftmp/src -classdir /Users/dude/Documents/SOA/workspace/gf/build/classes -p http://testservice.csiaf.unifi.it/=it.unifi.csiaf.testservice -impl -validate -exsh false -dns true -dex true -wsdlLocation http://localhost:8888/TestServiceGlassfish/TeamsService?wsdl -verbose -defaultValues -fe jaxws -db jaxb -wv 1.1 http://localhost:8888/TestServiceGlassfish/TeamsService?wsdl
wsdl2java - Apache CXF 2.6.8
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/Users/dude/glassfish3/glassfish/modules/weld-osgi-bundle.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/local/apache-cxf-2.6.8/lib/slf4j-jdk14-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
WSDLToJava Error: org.apache.cxf.wsdl11.WSDLRuntimeException: Fail to create wsdl definition from : http://localhost:8888/TestServiceGlassfish/TeamsService?wsdl …Run Code Online (Sandbox Code Playgroud) 我正在使用JAX-WS 2.2.5框架来调用WebServices.我想确定呼叫失败时的特殊情况,因为Web服务已关闭或无法访问.
在一些调用中,我得到一个WebServiceException.
catch(javax.xml.ws.WebServiceException e)
{
if(e.getCause() instanceof IOException)
if(e.getCause().getCause() instanceof ConnectException)
// Will reach here because the Web Service was down or not accessible
Run Code Online (Sandbox Code Playgroud)
在其他地方,我得到ClientTransportException(从WebServiceException派生的类)
catch(com.sun.xml.ws.client.ClientTransportException ce)
{
if(ce.getCause() instanceof ConnectException)
// Will reach here because the Web Service was down or not accessible
Run Code Online (Sandbox Code Playgroud)
什么是捕获此错误的好方法?
我应该使用类似的东西吗?
catch(javax.xml.ws.WebServiceException e)
{
if((e.getCause() instanceof ConnectException) || (e.getCause().getCause() instanceof ConnectException))
{
// Webservice is down or inaccessible
Run Code Online (Sandbox Code Playgroud)
或者有更好的方法吗?
java web-services exception-handling jax-ws webservices-client
我知道这不是提出问题的正确方法,但我遇到了问题:
我有一个本地存储的wsdl,我需要创建一个Web服务客户端来调用该Web服务.问题是服务是在防火墙后面,我必须通过代理连接到它,然后我必须验证连接到WS.
我所做的是使用Apache CXF 2.4.6生成WS客户端,然后设置系统范围的代理
System.getProperties().put("proxySet", "true");
System.getProperties().put("https.proxyHost", "10.10.10.10");
System.getProperties().put("https.proxyPort", "8080");
Run Code Online (Sandbox Code Playgroud)
我知道这不是最好的做法,所以请提出一个更好的解决方案,如果有人能给我一个关于如何设置验证的提示我真的很感激它
java web-services jax-ws webservices-client jax-ws-customization
我正在用 python 编写一个连接到 Restful Web 服务的客户端接口,不幸的是,该 Web 服务需要请求中存在自定义标头。我一直在使用 Requests 来实现此目的,但是 Web 服务还要求标头在请求中按特定顺序排列。我无法弄清楚请求如何对标头进行排序,并查看是否有办法能够控制此排序。
如果有人有建议,我也愿意在我的应用程序中使用除请求之外的其他模块。
我们的应用程序与之集成的第三方最近对其安全级别协议进行了更改.简而言之,My Axis客户端现在应该使用TLSv1.1或TLSv1.2发送呼叫.我看过其他有关此事的帖子,并提出了一些好主意:
在代码中进行了这些更改之后,我再次触发了调用,我使用了一个剪切工具来监视已发送的包,我仍然在SSL层中看到正在使用的协议是TLSv1.
我在这做错了什么?
这就是我设置新的SocketSecureFactory的方法:
AxisProperties.setProperty("axis.socketSecureFactory", MyTLSSocketSecureFactory.class.getName());
Run Code Online (Sandbox Code Playgroud)
而MyTLSSocketSecureFactory是:
public class MyTLSSocketSecureFactory extends JSSESocketFactory {
public MyTLSSocketSecureFactory(Hashtable attributes) {
super(attributes);
}
@Override
public Socket create(String host,int port, StringBuffer otherHeaders,BooleanHolder useFullURL)
throws Exception{
Socket s = super.create(host, port, otherHeaders, useFullURL);
((SSLSocket)s).setEnabledProtocols(new String[] {"TLSv1.1", "TLSv1.2"});
return s;
}
}
Run Code Online (Sandbox Code Playgroud)
非常感谢任何评论,谢谢.

我试图将这个Web服务集成到我的asp.net项目中,但它会弹出这种类型的错误!如果您对此有任何想法,请给我解决方案.有很多关于oodle web服务和oodle API的材料.
试试这个网址,了解我的问题 http://api.oodle.com/api/v2/listings?key=TEST®ion=chicago&category=vehicle/car
DropWizard在引擎盖下使用Jersey进行REST.我试图找出如何为我的DropWizard应用程序将公开的RESTful端点编写客户端.
为了这个例子,让我们说我的DropWizard应用程序有一个CarResource,它为CRUDding汽车公开了一些简单的RESTful端点:
@Path("/cars")
public class CarResource extends Resource {
// CRUDs car instances to some database (DAO).
public CardDao carDao = new CarDao();
@POST
public Car createCar(String make, String model, String rgbColor) {
Car car = new Car(make, model, rgbColor);
carDao.saveCar(car);
return car;
}
@GET
@Path("/make/{make}")
public List<Car> getCarsByMake(String make) {
List<Car> cars = carDao.getCarsByMake(make);
return cars;
}
}
Run Code Online (Sandbox Code Playgroud)
所以,我会想象,一个结构化的API客户端会是这样的一个CarServiceClient:
// Packaged up in a JAR library. Can be used by …Run Code Online (Sandbox Code Playgroud)