【发布时间】:2014-03-08 02:45:59
【问题描述】:
我正在尝试将附件从 JAX-WS/Metro 服务器发送到客户端。
我有一个标准的 Tomcat 7/JDK 6 环境和从 WSDL 生成的简单项目,只需一次操作。
许多指南都说如何配置 MTOM,我在响应中添加了 base64Binary 类型,在我的服务实现中添加了 @MTOM 注释。我没有添加任何其他内容。
当我打电话时
public static void main (String args[]){
Endpoint.publish("http://localhost:8080/sampleService", new SampleService()); ;
}
它工作正常,我看到来自服务器的附件。
现在我想创建一个做同样事情的网络应用程序。
这是我的 web.xml 的一部分
<listener>
<listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
</listener>
<servlet>
<servlet-name>SampleService</servlet-name>
<servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>SampleService</servlet-name>
<url-pattern>/SampleService</url-pattern>
</servlet-mapping>
我下载了 jaxws-ri 依赖项并将它们放在 Tomcat/lib 文件夹中。 还在 WEB-INF 目录下创建了以下 sun-jaxws.xml:
<?xml version="1.0" encoding="UTF-8"?>
<endpoints
xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime"
version="2.0">
<endpoint
name="SampleService"
implementation="com.example.SampleService"
url-pattern="/SampleService"
mtom-enabled="true"
/>
</endpoints>
注意 mtom-enabled 属性。
然后我部署它并且它工作,但 MTOM 不起作用,响应包含内联 Base64 编码的二进制数据而不是附件。 代码完全一样,只是运行方式和额外的web.xml和sun-jaxws.xml文件不同。
我错过了什么吗?
【问题讨论】:
标签: java web-services soap jax-ws