标签: jax-ws

Java JAX-WS Web服务客户端:如何记录日志请求和响应xml?

我创建了该实现的LoggingHandler实现SOAPHandler<SOAPMessageContext>

它应该在每次handleMessage触发时记录(在我的情况下从不调用它)

MyService service = new MyService();
MyServicePort port = service.getPortType();
Run Code Online (Sandbox Code Playgroud)

现在我试试这个:

BindingProvider bindingProvider = (BindingProvider)port;
bindingProvider.getBinding().getHandlerChain().add(new LoggingHandler());
Run Code Online (Sandbox Code Playgroud)

我没有看到任何请求/响应xml.

你能建议任何解决方案吗?也许有另一种方式来查看输出和请求XML?

java web-services jax-ws

17
推荐指数
1
解决办法
2万
查看次数

构造函数Service(URL,QName,WebServiceFeature [])未定义

我为我的客户端Web服务运行wsimport后,构造函数服务(URL,QName,WebServiceFeature [])是未定义的错误.我正在使用JDK 1.6.请帮忙.

错误

jax-ws wsimport

17
推荐指数
3
解决办法
3万
查看次数

如何为JAX-WS WebService调用设置超时

我正在使用WebService Client,我想为我的WebService调用设置一个Timeout.我尝试了不同的方法,但我仍然无法做到这一点.我正在使用JAX-WS从WSDL生成代码.我使用JBoss-eap-5.1作为App Server和JDK1.6.0_27.我发现这些差异方法用于设置超时,但它们都不适用于我.

URL mbr_service_url = new URL(null,GlobalVars.MemberService_WSDL, new URLStreamHandler() {

            @Override
            protected URLConnection openConnection(URL url) throws IOException {
                URL clone_url = new URL(url.toString());
                HttpURLConnection clone_urlconnection = (HttpURLConnection) clone_url.openConnection();
                // TimeOut settings
                clone_urlconnection.setConnectTimeout(10000);
                clone_urlconnection.setReadTimeout(10000);
                return (clone_urlconnection);
            }
        });
        MemberService service = new MemberService(mbr_service_url);
        MemberPortType soap = service.getMemberPort();
        ObjectFactory factory = new ObjectFactory();
        MemberEligibilityWithEnrollmentSourceRequest request = factory.createMemberEligibilityWithEnrollmentSourceRequest();

        request.setMemberId(GlobalVars.MemberId);
        request.setEligibilityDate(value);

        ((BindingProvider) soap).getRequestContext().put(com.sun.xml.ws.client.BindingProviderProperties.REQUEST_TIMEOUT, 10000);
        ((BindingProvider) soap).getRequestContext().put(com.sun.xml.ws.client.BindingProviderProperties.CONNECT_TIMEOUT, 10000);
        ((BindingProvider) soap).getRequestContext().put(com.sun.xml.internal.ws.client.BindingProviderProperties.REQUEST_TIMEOUT, 10000);
        ((BindingProvider) soap).getRequestContext().put(com.sun.xml.internal.ws.client.BindingProviderProperties.CONNECT_TIMEOUT, 10000);
        ((BindingProvider) soap).getRequestContext().put(com.sun.xml.ws.developer.JAXWSProperties.REQUEST_TIMEOUT, 10000);
        ((BindingProvider) soap).getRequestContext().put(com.sun.xml.ws.developer.JAXWSProperties.CONNECT_TIMEOUT, 10000);
        ((BindingProvider) soap).getRequestContext().put(com.sun.xml.internal.ws.developer.JAXWSProperties.REQUEST_TIMEOUT, 10000);
        ((BindingProvider) …
Run Code Online (Sandbox Code Playgroud)

java jboss web-services jax-ws java-ee

17
推荐指数
3
解决办法
7万
查看次数

java web服务客户端,添加http标头

在wsdl上使用wsimport创建了一个java Web服务客户端,我需要为http请求中嵌入的每个soap消息设置Authorization头.生成了javax.xml.ws.Service的子类后,如何将http标头附加到每个传出请求?

java soap web-services jax-ws

16
推荐指数
4
解决办法
4万
查看次数

在不下载WSDL的情况下实例化JAX-WS服务?

我有一个Web服务,我有JAX-WS生成的客户端绑定,如下所示:

// web service client generated by JAX-WS
@WebServiceClient( ... )
public class WebService_Service extends Service {

    public WebService_Service(URL wsdlLocation, QName serviceName) {
        super(wsdlLocation, serviceName);
    }

    WebService getWebServiceSOAP() {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望能够创建一个指向远程服务的实例,例如:

WebService_Service svc = new WebService_Service(
    new URL("http://www.example.com/ws?wsdl"),
    new QName("http://www.example.com/ws", "WebService"));
Run Code Online (Sandbox Code Playgroud)

但是下载了http://www.example.com/ws?wsdl我不想做的WSDL .

有没有办法停止下载该WSDL,但仍然指向同一个端点?

java wsdl web-services jax-ws

16
推荐指数
2
解决办法
2万
查看次数

使用WebParam不允许使用XmlElement注释

我在webservice中有一个方法,具有以下签名:

@WebResult(name="purchaseId") public int CreatePurchase(
            @XmlElement(required=true)
            @WebParam(name = "item") String item {
  ...
}
Run Code Online (Sandbox Code Playgroud)

在我看来(根据我发现的信息),这应该工作.不幸的是,我在编译时收到以下错误消息:

The annotation @XmlElement is disallowed for this location
Run Code Online (Sandbox Code Playgroud)

有谁知道如何解决这个问题?

java xml web-services jax-ws

16
推荐指数
1
解决办法
2万
查看次数

JAX-WS实现包含在Java中?

我有一个JAX-WS Web服务应用程序,它作为Tomcat 7的WAR文件进行部署.它使用最新版本的Metro库,我将其包含在WAR文件中,并且工作正常.

我正在尝试简化部署包.据我所知,太阳JDK包括地铁的复印件(请参阅这个问题这个为例),但出于某种原因,这显然是强制性的,同时一个从GlassFish网站下载,以取代地铁的这个副本.我试图了解是否有可能只使用Tomcat和JDK附带的城域网实现,或者如果不是为什么不这样做.

WAR内容如下(删除了类文件):

META-INF/MANIFEST.MF
WEB-INF/classes/
WEB-INF/classes/com/[et cetera]
WEB-INF/ibm-web-ext.xml
WEB-INF/lib/
WEB-INF/lib/stax-api.jar
WEB-INF/lib/webservices-api.jar
WEB-INF/lib/webservices-extra-api.jar
WEB-INF/lib/webservices-extra.jar
WEB-INF/lib/webservices-rt.jar
WEB-INF/lib/webservices-tools.jar
WEB-INF/sun-jaxws.xml
WEB-INF/web.xml
wsdl/
wsdl/MyService.wsdl
Run Code Online (Sandbox Code Playgroud)

web.xml 包含,部分:

<servlet>
    <servlet-name>MyService</servlet-name>
    <servlet-class>
        com.sun.xml.ws.transport.http.servlet.WSServlet
    </servlet-class>              
</servlet>
Run Code Online (Sandbox Code Playgroud)

当我从WAR中删除webservices-*jars(Metro jar)时,Web服务失败并显示错误"Wrapper找不到servlet类com.sun.xml.ws.transport.http.servlet.WSServlet或类这取决于".这并不奇怪,因为我无法在Java 7 SE附带的罐子里找到该类.

那么,如果你必须下载另一份Metro来制作像这样的工作,那么说Java 7附带Metro是什么意思呢?是否可以仅使用Java附带的jar在Tomcat中运行JAX-WS Web服务?

java tomcat web-services java-metro-framework jax-ws

16
推荐指数
2
解决办法
3万
查看次数

java.lang.NoClassDefFoundError:com/sun/istack/localization/Localizable?

我尝试通过tomcat7运行我的项目.通过jax ws maven插件生成我的webservices的wsdl文件(并且它由成功生成)但是尝试在浏览器中查看wsdl文件但不是结果.

我试图通过tomcat7服务器运行我的项目,但出现此错误,我没有任何解决这个问题,我的错误:

août 06, 2013 12:08:09 PM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments   was not found on the java.library.path: C:\Program   Files\Java\jdk1.7.0_21\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program   Files/Java/jre7/bin/client;C:/Program Files/Java/jre7/bin;C:/Program Files/Java/jre7/lib/i386;C:\Program   Files\MiKTeX 2.9\miktex\bin;%CommonProgramFiles%\Microsoft Shared\Windows Live;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\MATLAB\R2010a\runtime\win32;C:\Program Files\MATLAB\R2010a\bin;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Orant\bin;C:\Centrun;C:\LHS\BSCS_iX_R2_Demo;C:\LHS\BSCS_iX_R2_Demo\bin\win32;C:\LHS\BSCS_iX_R2_Demo\3pp\win32;C:\LHS\BSCS_iX_R2_Demo\TAO1.3aP12_WinXP\ACE_wrappers\bin;C:\LHS\BSCS_iX_R2_Demo\TAO1.3aP12_WinXP\ACE_wrappers\lib;C:\LHS\BSCS_iX_R2_Demo\jdk1.5.0_06\bin;C:\Program Files\apache-maven-3.1.0\bin;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Users\sayed\Desktop\eclipse\eclipse;;.
 août 06, 2013 12:08:09 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
 WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to    'org.eclipse.jst.j2ee.server:BSCSwebservices' did not find a matching property.
août 06, 2013 …
Run Code Online (Sandbox Code Playgroud)

java jax-ws maven

16
推荐指数
3
解决办法
5万
查看次数

返回错误的JAX-WS服务器端SOAPHandler在WebSphere v8上获得"内部错误"

我有一个服务器端JAX-WS SOAPHandler(在WebSphere v8上),在某些情况下需要使用它在String变量中的SOAP响应来响应客户端(让我们调用它responseXml).

responseXml包含成功(即非故障)SOAP消息时,JAX-WS会正确地将响应发送到客户端.但是,当responseXml包含SOAP错误消息时,会发生"内部错误",并且客户端获得的错误响应与其中的不同responseXml,如下所示:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Body>
      <soapenv:Fault xmlns:axis2ns1="http://schemas.xmlsoap.org/soap/envelope/">
         <faultcode>axis2ns1:Server</faultcode>
         <faultstring>Internal Error</faultstring>
         <detail/>
      </soapenv:Fault>
   </soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)

将以下错误写入控制台:

[10/9/12 12:21:04:177 EDT] 00000025 AxisEngine    E org.apache.axis2.engine.AxisEngine receive An error was detected during JAXWS processing
                             org.apache.axis2.AxisFault: An error was detected during JAXWS processing
at org.apache.axis2.jaxws.server.JAXWSMessageReceiver.receive(JAXWSMessageReceiver.java:208)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:198)
at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:172)
at com.ibm.ws.websvcs.transport.http.WASAxis2Servlet.doPost(WASAxis2Servlet.java:1466)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:595)
...
Run Code Online (Sandbox Code Playgroud)

这是一个简化SOAPHandler,说明了这个问题.(请注意,responseXml这里显示的值只是一个示例.在我的实际中SOAPHandler,响应不是硬编码的,而是从数据库中读取的.我只是想尽可能地展示最简单的示例代码.)

package simplified.demo;

import java.io.ByteArrayInputStream;
import java.util.Set;

import javax.xml.namespace.QName;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPMessage;
import …
Run Code Online (Sandbox Code Playgroud)

websphere soap jax-ws websphere-8

15
推荐指数
2
解决办法
3万
查看次数

使用Oltu传递给OAuthTokenRequest时无法使用@ Context HttpServletRequest检索发布数据

我正在使用Oltu作为Oauth2.

使用@Context HttpServletRequest请求时,我无法检索发布数据

当我使用@FormParam时,我能够检索发布数据.

在将请求传递给OAuthTokenRequest时

OAuthTokenRequest oauthRequest = new OAuthTokenRequest(request);
Run Code Online (Sandbox Code Playgroud)

我收到了以下错误

{"error":"invalid_request","error_description":"缺少grant_type参数值"}

在oltu OAuthTokenRequest类上进行调试时,使用以下代码来检索param值

public String getParam(String name) {
        return this.request.getParameter(name); // from request it is unable to get post data.As i am getting request object using  @Context HttpServletRequest request .
    }
Run Code Online (Sandbox Code Playgroud)

据说使用@Context HttpServletRequest请求无法获取使用@Context HttpServletRequest请求的帖子数据所以,我的问题是

如何在jax-ws中获取带有post数据的HttpServletRequest请求,以便我可以将HttpServletRequest请求传递给OAuthTokenRequest 这是我的代码

@Path("/token")
public class TokenEndpoint {

 @POST
    @Consumes("application/x-www-form-urlencoded")
    @Produces("application/json")
    public Response authorize(@FormParam("state") String state,@Context HttpServletRequest request) throws OAuthSystemException {
        try {
        // here I am unable to get value of request.getParameter("state") 
       // but using …
Run Code Online (Sandbox Code Playgroud)

java jax-ws oauth-2.0 oltu

15
推荐指数
1
解决办法
5388
查看次数