`
llyzq
  • 浏览: 579875 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java调用c# webservice错误记录及解决 server.userexception java.lang.NullPointerException 解

 
阅读更多
转自http://blog.csdn.net/xgx1985xgx/article/details/6257368

最近在弄一个java调用c#所写的webservice的程序(我使用的是axis1.4),在测试中用c#写了一个很简单的webservice,然后在myeclipse中采用以下代码调用

view plain
import org.apache.axis.client.Call; 
import org.apache.axis.client.Service; 
import javax.xml.namespace.QName; 
import javax.xml.rpc.ServiceException; 
import java.net.MalformedURLException; 
import java.rmi.RemoteException; 
import org.w3c.dom.*; 
/**
* @author xiegx E-mail:544890379@163.com
* @version 创建时间:Mar 10, 2011 5:37:09 PM
* 类说明 测试调用webservice
*/ 
public class Test { 
 
    /**
     * @param args
     */ 
    public static void main(String[] args) { 
        // TODO Auto-generated method stub 
        try{ 
        // 指出service所在URL      
        String endpoint = "http://localhost:2339/WebSite1/Service.asmx"; 
        // 创建一个服务(service)调用(call)      
        Service service = new Service(); 
        Call call = (Call)service.createCall();// 通过service创建call对象      
        // 设置service所在URL      
        call.setTargetEndpointAddress(new java.net.URL(endpoint)); 
        //设置要调用的方法 
        call.setOperationName( new  QName( "http://www.luculent.net/T","StartService" )); 
        //设置该方法需要的参数 
        call.addParameter( "serviceName" , org.apache.axis.encoding.XMLType.XSD_STRING, 
                javax.xml.rpc.ParameterMode.IN); 
        //设置方法返回值的类型 
        call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING); 
        call.setUseSOAPAction(true); 
        //调用该方法 
        call.setSOAPActionURI("http://www.luculent.net/StartService"); 
        String ret = (String) call.invoke(new Object[] { new String("MSSQLSERVER") }); 
 
        /*// 方法名(processService)与MyService.java方法名保持一致     
        call.setOperationName("StartService");
        call.setReturnType(org.apache.axis.Constants.XSD_STRING);
        // Object 数组封装了参数,参数为"This is Test!",调用processService(String arg)     
        String ret = (String) call.invoke(new Object[] { new String("MSSQLSERVER") });*/ 
        System.out.println(ret); 
        }catch(Exception ex){ 
            ex.printStackTrace(); 
            System.out.println(ex.toString()); 
        } 
 
    } 
 


在java中调用c#中StartService的方法,在myeclipse中一切正常,得到了正确的返回结果

然后将上述程序放到jsp文件中,部署到weblogic8.1中运行,结果报以下错误



AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.lang.NullPointerException
faultActor:
faultNode:
faultDetail:
        {http://xml.apache.org/axis/}stackTrace:java.lang.NullPointerException
        at org.apache.axis.message.MessageElement.addTextNode(MessageElement.jav
a:1396)
        at org.apache.axis.message.SOAPHandler.addTextNode(SOAPHandler.java:148)

        at org.apache.axis.message.SOAPHandler.endElement(SOAPHandler.java:112)
        at org.apache.axis.encoding.DeserializationContext.endElement(Deserializ
ationContext.java:1087)
        at weblogic.apache.xerces.parsers.AbstractSAXParser.endElement(AbstractS
AXParser.java:585)
        at weblogic.apache.xerces.impl.XMLNamespaceBinder.handleEndElement(XMLNa
mespaceBinder.java:898)
        at weblogic.apache.xerces.impl.XMLNamespaceBinder.endElement(XMLNamespac
eBinder.java:644)
        at weblogic.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndEle
ment(XMLDocumentFragmentScannerImpl.java:1008)
        at weblogic.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentCo
ntentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1469)
        at weblogic.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocume
nt(XMLDocumentFragmentScannerImpl.java:329)
        at weblogic.apache.xerces.parsers.DTDConfiguration.parse(DTDConfiguratio
n.java:525)
        at weblogic.apache.xerces.parsers.DTDConfiguration.parse(DTDConfiguratio
n.java:581)
        at weblogic.apache.xerces.parsers.XMLParser.parse(XMLParser.java:152)
        at weblogic.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXPar
ser.java:1175)
        at weblogic.xml.jaxp.WebLogicXMLReader.parse(WebLogicXMLReader.java:135)

        at weblogic.xml.jaxp.RegistryXMLReader.parse(RegistryXMLReader.java:138)

        at javax.xml.parsers.SAXParser.parse(SAXParser.java:345)
        at org.apache.axis.encoding.DeserializationContext.parse(Deserialization
Context.java:227)
        at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
        at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
        at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnders
tandChecker.java:62)
        at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
        at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
        at org.apache.axis.client.Call.invoke(Call.java:2767)
        at org.apache.axis.client.Call.invoke(Call.java:2443)
        at org.apache.axis.client.Call.invoke(Call.java:2366)
        at org.apache.axis.client.Call.invoke(Call.java:1812)
        at jsp_servlet.__webservice.stest(__webservice.java:73)
        at jsp_servlet.__webservice._jspService(__webservice.java:188)
        at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)
        at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run
(ServletStubImpl.java:971)
        at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:402)
        at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:446)
        at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:305)
        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationActio
n.run(WebAppServletContext.java:6350)
        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
dSubject.java:317)
        at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
118)
        at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppSe
rvletContext.java:3635)
        at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestIm
pl.java:2585)
        at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
        at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)

        {http://xml.apache.org/axis/}hostname:PC-201004012019

java.lang.NullPointerException
        at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
        at org.apache.axis.client.AxisClient.invoke(AxisClient.java:216)
        at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
        at org.apache.axis.client.Call.invoke(Call.java:2767)
        at org.apache.axis.client.Call.invoke(Call.java:2443)
        at org.apache.axis.client.Call.invoke(Call.java:2366)
        at org.apache.axis.client.Call.invoke(Call.java:1812)
        at jsp_servlet.__webservice.stest(__webservice.java:73)
        at jsp_servlet.__webservice._jspService(__webservice.java:188)
        at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)
        at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run
(ServletStubImpl.java:971)





上述问题的原因是axis1.4和weblogic8.1有冲突,weblogic 本身携带的webservice.jar使用的旧的javax.xml.soap.*,而不是像axis使用J2EE1.4新的版本。解决方案是在应用WEB-INF/weblogic.xml(若应用中没有weblogic.xml,则可以在bea/weblogic81/samples/server/examples/build/examplesWebApp/WEB-INF中拷贝)在文件中加入如下红色配置:

    <weblogic-web-app>
<container-descriptor>
  <prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>
</weblogic-web-app>

修改后重启weblogic,一切正常,问题解决!
分享到:
评论
1 楼 lhgyy00 2012-02-29  
我在main函数中就报了一样的错。。。悲剧啊!!

相关推荐

    java调用webservice.zip

    java调用webservicejava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava...

    Java调用C#的WebService例子

    Java调用C#的WebService是跨平台间通信的一种常见方式,尤其在企业级应用中,可能需要集成不同语言开发的服务。本示例介绍如何在Java环境中利用Xfire库来调用C#编写的WebService服务。 首先,理解WebService的核心...

    C#调用JavaWebService

    调用WebService,最简单的办法当然是直接添加WEB引用,然后自动产生代理类,但是在调用JAVA的WebService时并没有这么简单,特别是对于SoapHeader的处理,通过C#添加Web引用方式访问JavaWebService的方法,除了string...

    webservice启动没有问题,通过自动生成的客户端报错

    faultString: java.lang.reflect.InvocationTargetException faultActor: faultNode: faultDetail: {http://xml.apache.org/axis/}stackTrace: AxisFault faultCode: {...

    C# WebService入门.docx

    C# WebService入门.docx C# WebService入门.docx C# WebService入门.docx C# WebService入门.docx C# WebService入门.docx C# WebService入门.docx C# WebService入门.docx C# WebService入门.docx C# WebService...

    java axis 调用C# webService所需的jar包

    在这种情况下,Axis作为一个成熟的SOAP客户端框架,可以帮助Java开发者实现对C# WebService的调用。本文将详细讲解如何使用Java Axis库来调用C# WebService,并介绍所需的jar包。 首先,理解Java Axis的基本概念是...

    C#调用java发布的WebService终稿.pdf

    1.C# 调用 Java 发布的 WebService 需要使用 Web 引用。 2.使用 C# 语言调用 Java 发布的 WebService 需要添加 Web 引用。 3. WebService 的 URL 需要遵循特定的格式,例如 ...

    C#调用WebService实例和开发(wsdl).rar

    在"C#调用WebService实例和开发(wsdl).pdf"中,读者可能会找到关于这些步骤的具体实现,包括代码示例、错误处理以及最佳实践。通过深入学习和实践,开发者不仅可以了解如何调用现有的WebService,还能掌握创建...

    Java访问c#开发的webservice

    在大型项目开发中,避免不了分布式的应用,分布式应用的业务逻辑一般分别部署到若干个...本文详细介绍了java如何调用c#开发的webservice。 本文的开发环境为:windows10、vs2012 Jdk1.8、Tomcat8.15、Eclipse-jee

    java 调用https webservice实例及axis包

    Apache Axis是一款开源的Web Service框架,它使得Java开发者能够方便地创建和调用Web Service。对于HTTPS的支持,Axis提供了相应的配置和工具。 调用HTTPS Web Service的步骤大致如下: 1. **添加依赖**:首先,你...

    C++2005调用C#Webservice接口返回值为List

    C++2005调用C#Webservice接口返回值为List 本文将详细介绍C++2005如何调用C#Webservice接口返回值为List。首先,需要了解C#Webservice的基本概念和C++2005如何调用Webservice接口。 一、C#Webservice的基本概念 ...

    普通java访问c# webService

    本示例介绍的是如何使用Java来访问由C#编写的WebService服务。WebService是一种基于互联网的、平台无关的通信机制,它允许不同系统间的应用程序通过网络进行交互。 首先,我们需要理解WebService的基本原理。...

    用java调用C#编写的Webservice[归纳].pdf

    【Java调用C#编写的Web Service】 在跨平台的软件开发中,有时我们需要在Java应用中调用由其他语言,比如C#编写的Web Service。这篇文档将介绍如何使用Java来调用C#编写的Web Service,主要分为以下几个步骤: 1. ...

    java调用.net发布的webservice(asmx)

    本文将详细讲解如何使用Java调用.NET发布的Web Service(ASMX),并解决在此过程中可能出现的SOAPAction报错和“Server not identified”错误。 首先,我们需要了解ASMX。ASMX是.NET Framework早期版本中用于创建...

    JAVA 调用SAP SOAP webservice.docx

    JAVA 调用 SAP SOAP webservice 详解 在本文中,我们将详细介绍如何使用 JAVA 调用 SAP SOAP webservice,包括配置 SAP 登录信息、创建 java 项目、添加 web 服务客户端、生成 JAVA 类、调用接口等步骤。 配置 SAP...

    c#调用Java webService的专题(一)

    本文将深入探讨如何使用C#调用Java WebService,这是实现.NET与Java平台间互操作性的一个重要方式。我们将首先理解WebService的基本概念,然后详细讲解C#中如何通过.NET Framework的SOAP客户端代理类来调用Java ...

    C#_.NET_动态调用webservice的三种方式

    C# _.NET_动态调用webservice的三种方式 在本文中,我们将讨论如何动态调用WebService的三种方式。在某些情况下,我们可能需要在程序运行期间动态调用一个未知的服务。这可以通过使用.NET Framework的System.Web....

    java调用.net的WebService[借鉴].pdf

    【Java 调用 .NET WebService 基础知识】 在软件开发中,跨平台交互是常见的需求,Java 和 .NET 平台之间的通信可以通过 WebService 实现。本篇将详细讲解如何使用 Java 调用 .NET 开发的 WebService。 1. **...

    java调用WebService(客户端)宣贯.pdf

    java调用WebService(客户端)宣贯.pdf

    delphi调用C#webservice.rar

    对于“传参解决工程”这个文件,可能是具体解决Delphi调用Web服务时参数传递的问题,如类型不匹配、序列化/反序列化错误等。在实际应用中,遇到这类问题时,可以参考这个文件的内容进行调试和修复。

Global site tag (gtag.js) - Google Analytics