小编Aus*_*ler的帖子

在JAX-WS客户端.jar中嵌入Web服务的WSDL

我有一个几年前在C++中创建的Web服务,并由.NET客户端使用C#的"wsdl.exe"来生成客户端存根.出于各种原因,我现在还需要Java客户端,并且愿意使用JAX-WS限制Java 6(JDK 1.6)的使用.生成的存根工作正常,即使打包在.jar中,但我遇到了JAX-WS Web服务客户端要部署的方式的问题.看起来我遇到的问题可以解决的,但建议的方法似乎都不起作用.

JAX-WS期望WSDL可以访问,最好是从网络访问,因为它每次启动时都会解析WSDL以创建绑定.与使用已知但无法访问的wsdl创建Web服务客户端中的 jgrowl一样,客户端可能无法访问JAX-WS使用的URL(可能是构建计算机上的文件或指向localhost的指针)的WSDL. .我想在客户端.jar中发布WSDL,但最简单的解决方案(-wsdllocation "/path/to/wsdl/in/jar.wsdl")打印出一个我不想显示的警告.

我也宁愿具有客户做这样的事情找到了解决办法jgrowl,这似乎工作,但不只是工作.在Google上找到的文章主要针对服务器WSDL位置,但建议客户端应该能够META-INF/jax-ws-catalog.xml使用将用于转换-wsdllocation为.jar文件中的路径的URL 的文件,但这些文件在我们的测试中似乎不起作用.

是否有一个"配方",以便我可以将WSDL放在.jar的某个地方并且让JAX-WS客户端需要在客户端用户方面不需要额外的工作而且没有警告?

java wsdl jar jax-ws

5
推荐指数
1
解决办法
7882
查看次数

如何使用boost :: signals2存储和转发插槽?

我有一个问题,我必须比我想要更早地实例化对象的实例,因为我需要通过一些深层所有权连接信号槽,我想提出一种存储和转发方式插槽,以便我可以构建更接近其使用站点的对象,而不是作为成员变量.

我的基本问题是我有一个进程,它将在一个单独的线程上下载更新文件,并向任何感兴趣的人发送进度信号.信号基本上是:

typedef boost::signals2::signal<void (double)> DownloadProgress;
Run Code Online (Sandbox Code Playgroud)

假设progress下面提到的功能的实现符合这一点; 信号本身的性质并不是很重要(尽管我大部分时间都在使用仿函数).

信号已设置,代码调用如下:

Updater updater;
updater.onDownloadProgress(&progress);
updater.runDownloadTask();
Run Code Online (Sandbox Code Playgroud)

当你打电话时updater.runDownloadTask(),它会启动 UpdaterDownloadTask,启动HTTPRequest并返回一个 HTTPResponse.的HTTPResponse是,其与网络层相互作用并接收数据,并包含所述片DownloadProgress 的信号.有了这个,我的实现看起来有点像(自下而上 HTTPResponse,大大缩写为elide方法,不是特别说明):

class HTTPResponse
{
public:
  // this will be called for every "chunk" the underlying HTTP
  // library receives
  void processData(const char* data, size_t size)
  {
    // process the data and then send the progress signal
    // assume that currentSize_ and totalSize_ are properly set
    progressSignal_(currentSize_ * 100.0 / totalSize_);
  } …
Run Code Online (Sandbox Code Playgroud)

c++ boost-signals2

5
推荐指数
1
解决办法
463
查看次数

标签 统计

boost-signals2 ×1

c++ ×1

jar ×1

java ×1

jax-ws ×1

wsdl ×1