【问题标题】:Webservice using axis2 in tomcat在tomcat中使用axis2的Web服务
【发布时间】:2013-06-21 09:39:44
【问题描述】:

我是开发网络服务的新手。我正在使用axis2创建网络服务并部署在tomcat中。我通过从博客中获取一些知识并将其部署到tomcat7中没有问题。当我在SOAP中检查该网络服务时UI.我出错了。

我所做的是。我创建一个具有我的方法的 java 类。该方法用于将记录插入到 solr。所以我使用 http 客户端、基本名称值对等。我为该类制作 aar 文件并部署它在tomcat中没有任何问题。但是当我通过soapUi调用该方法时,我在控制台中遇到错误。请帮助我。

我的错误控制台是:

Exception In Source Create Service   java.lang.ClassCastException: org.apache.http.message.BasicNameValuePair cannot be cast to org.apache.http.NameValuePair
[ERROR] loader constraint violation: when resolving method "org.apache.http.client.methods.HttpPost.setParams(Lorg/apache/http/params/HttpParams;)V" the class loader (instance of org/apache/axis2/deployment/DeploymentClassLoader) of the current class, com/mf/dmsolr/SolrUtil, and the class loader (instance of org/apache/catalina/loader/StandardClassLoader) for resolved class, org/apache/http/client/methods/HttpPost, have different Class objects for the type client.methods.HttpPost.setParams(Lorg/apache/http/params/HttpParams;)V used in the signature
java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.apache.axis2.rpc.receivers.RPCUtil.invokeServiceClass(RPCUtil.java:212)
    at org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:117)
    at org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40)
    at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:114)
    at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:181)
    at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:172)
    at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:146)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.LinkageError: loader constraint violation: when resolving method "org.apache.http.client.methods.HttpPost.setParams(Lorg/apache/http/params/HttpParams;)V" the class loader (instance of org/apache/axis2/deployment/DeploymentClassLoader) of the current class, com/mf/dmsolr/SolrUtil, and the class loader (instance of org/apache/catalina/loader/StandardClassLoader) for resolved class, org/apache/http/client/methods/HttpPost, have different Class objects for the type client.methods.HttpPost.setParams(Lorg/apache/http/params/HttpParams;)V used in the signature
    at com.mf.dmsolr.SolrUtil.insertRecords(SolrUtil.java:34)
    at com.mf.dmsolr.Dmwebservices.insertXMLData(Dmwebservices.java:172)
    at com.mf.dmsolr.Dmwebservices.createSource(Dmwebservices.java:102)
    ... 29 more

我的 java 代码导入如下。

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringReader;
import java.security.MessageDigest;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.zip.GZIPOutputStream;
import java.util.zip.InflaterInputStream;

import javax.xml.XMLConstants;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

import com.mf.dmsolr.server.DataSet;
import com.mf.dmsolr.server.Datastreamtype;
import com.mf.dmsolr.server.Recordtype;

我的 lib 文件夹包含

httpclient-4.2.1.jar
httpclient-4.2.3.jar
httpcore-4.2.1.jar
httpcore-4.2.2.jar
httpmime-4.2.3.jar

当我使用我的 aar 文件部署轴应用程序时遇到了一些问题。我通过复制我在我的 java 应用程序中拥有的 jar 并在 tomcat lib 文件夹中过去的 jar 来解决该问题。然后该错误消失了。并成功部署。如果是问题意味着,如何纠正这个问题。 请帮助我。谢谢

【问题讨论】:

  • 显示你的代码来调用这些网络服务
  • 我通过 SOAP UI 工具调用此 Web 服务仅用于测试。当时只有我在 Eclipse 服务器控制台中收到此错误
  • 网络服务代码和你的 WSDL

标签: java web-services solr tomcat7 axis2


【解决方案1】:

您的类路径中不应有不同版本的相同 jar 文件。请选择您需要的httpcore和httpclient版本。

你把轴罐放在哪里,你真的需要另一个 http-clent.jar 吗?

axis2中已经有一个了:

./axis2-1.6.2/lib/commons-httpclient-3.1.jar

org/apache/commons/httpclient/params/HttpParams.class

我猜是有冲突....

【讨论】:

  • 现在我删除了axis2 lib中的commons-httpclient-3.1.jar并再次部署它......不,我在部署自己时出错......[错误] org/apache/commons/httpclient/ HttpException org.apache.axis2.deployment.DeploymentException: org/apache/commons/httpclient/HttpException
  • 请帮助..如果我用我已经使用过的 http-clent.jar 替换 /commons-httpclient-3.1.jar。部署时会出错。
  • 您应该保持轴包原样,因此最好用轴版本替换您的 httpClient 版本并改用它...。您还可以发布有关您的设置的更多信息吗,例如版本信息、您的课程列表等。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-31
  • 2012-04-23
  • 1970-01-01
  • 2012-08-09
  • 1970-01-01
  • 1970-01-01
  • 2015-04-30
相关资源
最近更新 更多