我尝试创建Web服务,并应通过push接收数据。我使用WSDL从NetBDL生成了一个Web服务。不幸的是,我总是在输出中:
由于异常而无法创建SOAP消息:XML reader错误: com.ctc.wstx.exc.WstxParsingException:无效的UTF-8起始字节0x8b (在char#2,byte#-1)引起:com.ctc.wstx.exc.WstxIOException: 无效的UTF-8起始字节0x8b(在字符#2,字节#-1)
如果我更改了绑定类型:
@BindingType(javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING)
我明白了:
不支持的内容类型:text / html支持的内容是: [应用/肥皂+ XML]
所以这是一个1.1 SOAP协议(改为SOAP11HTTP_BINDING)。
我使用Glassfish 3.1.2.2并将JVM-Options更改为:
-Dfile.encoding=UTF-8
和
-Dfile.encoding=UTF8
但没有帮助。 UTF16或UTF-16抛出异常。
这就是我的pom.xml的样子:
...
<plugin>
<groupId>org.jvnet.jax-ws-commons</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<wsdlFiles>
<wsdlFile>PushService.wsdl</wsdlFile>
</wsdlFiles>
<staleFile>${project.build.directory}/jaxws/stale/PushService.stale</staleFile>
</configuration>
<id>wsimport-generate-PushService</id>
<phase>generate-sources</phase>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>javax.xml</groupId>
<artifactId>webservices-api</artifactId>
<version>1.4</version>
</dependency>
</dependencies>
<configuration>
<sourceDestDir>${project.build.directory}/generated-sources/jaxws-wsimport</sourceDestDir>
<xnocompile>true</xnocompile>
<verbose>true</verbose>
<extension>true</extension>
<catalog>${basedir}/src/jax-ws-catalog.xml</catalog>
</configuration>
</plugin>
...
我该如何解决这个问题?
更新 原因是服务发送请求gzip。那么如何解压缩gzipped的答案呢?
答案 0 :(得分:0)
显然,Glassfish还不支持gzip解码。所以我实现了一个Filter,它解码了Input:
@WebFilter(filterName = "GZipInputFilter", urlPatterns = {"/*"})
public class GZipInputFilter implements Filter