错误出现在httpclient提交数据的阶段,错误代码如下:
- I/O exception (java.net.ConnectException) caught when processing request: Conn
ection refused: connect
- Retrying request
- I/O exception (java.net.ConnectException) caught when processing request: Conn
ection refused: connect
- Retrying request
- I/O exception (java.net.ConnectException) caught when processing request: Conn
ection refused: connect
- Retrying request
java.net.ConnectException: Connection refused: connect
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
        at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
        at java.net.Socket.connect(Socket.java:519)
        at java.net.Socket.connect(Socket.java:469)
        at java.net.Socket.<init>(Socket.java:366)
        at java.net.Socket.<init>(Socket.java:240)
        at org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.c
reateSocket(DefaultProtocolSocketFactory.java:79)
        at org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.c
reateSocket(DefaultProtocolSocketFactory.java:121)
        at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java
:706)
        at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(Htt
pMethodDirector.java:386)
        at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMe
thodDirector.java:170)
        at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.jav
a:396)
        at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.jav
a:324)
        at com.synch.Synch.SynchronizedUserInfo(Synch.java:127)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.j
ava:401)
        at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider
.java:309)
        at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:
333)
        at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrateg
y.java:71)
        at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:150)
        at org.apache.axis.SimpleChain.invoke(SimpleChain.java:120)
        at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:479
)
        at org.apache.axis.server.AxisServer.invoke(AxisServer.java:323)
        at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:85
4)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
        at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBas
e.java:339)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:303)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:208)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:220)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:122)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authentica
torBase.java:501)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:170)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:98)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:116)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a:408)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp
11Processor.java:1040)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(
AbstractProtocol.java:607)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoin
t.java:313)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
utor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
.java:908)
        at java.lang.Thread.run(Thread.java:619)我在网上查了一下,说我没有关闭连接没有释放或者释放方法不对,按照这个http://www.iteye.com/topic/234759改了一下但是改了之后还是报错。
求大神指教,

解决方案 »

  1.   

    package com.synch;import java.util.Iterator;
    import com.bjca.uums.client.bean.RoleInformation;
    import com.trs.idm.spnego.Base64;
    import com.trs.idm.util.DesEncryptUtil;
    import com.trs.idm.util.StringHelper;import java.io.IOException;
    import java.io.UnsupportedEncodingException;
    import java.rmi.RemoteException;
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;import org.apache.commons.httpclient.HttpClient;
    import org.apache.commons.httpclient.HttpException;
    import org.apache.commons.httpclient.SimpleHttpConnectionManager;
    //import org.apache.commons.httpclient.SimpleHttpConnectionManager;
    import org.apache.commons.httpclient.methods.PostMethod;public class Synch {
        private static String idsUrl = "http://127.0.0.1:8085/ids"; 
    private static String serviceUrl = idsUrl + "/service?idsServiceType=remoteapi&method=userManageService";
      public Synch() {
      }  public boolean SynchronizedUserInfo(int operateID, String operateCode,
                                          String operateType)   {
        boolean bolret = false;
        System.out.println("操作id"+operateID);
        System.out.println("用户code"+operateCode);
        System.out.println("------"+operateType);
        /*********************************用户*********************************************/
        if (operateID == 11) {
          cn.gov.bjxch.ca.uumsinterface.services.User.UserSoapBindingStub binding;
          try {
              binding = (cn.gov.bjxch.ca.uumsinterface.services.User.UserSoapBindingStub)
                            new cn.gov.bjxch.ca.uumsinterface.services.User.UserServiceLocator().getUser();
          }
          catch (javax.xml.rpc.ServiceException jre) {
              if(jre.getLinkedCause()!=null)
                  jre.getLinkedCause().printStackTrace();
              throw new junit.framework.AssertionFailedError("JAX-RPC ServiceException caught: " + jre);
          }      // Time out after a minute
          binding.setTimeout(60000);      com.bjca.uums.client.bean.PersonInformation value = null;
          com.bjca.uums.client.bean.LoginInformation logininfo = null;
         try {
           value = binding.findPersonInfosByUserIDForDC(operateCode);
           logininfo = binding.getLoginInformationByUserID(operateCode);
           //PostMethod methodPost = new PostMethod(serviceUrl);
           String username = value.getUserName();
           String default1 = value.getDefault1();
           String userdefault1 = value.getUserDefault1();
           String userdefault2 = value.getUserDefault2();
           String userdefault3 = value.getUserDefault3();
           String userdefault4 = value.getUserDefault4();
           String userdefault5 = value.getUserDefault5();
           String userdefault6 = value.getUserDefault6();
           String userdegree = value.getUserDegree();
           String cardnum = value.getUserIdcardNum();
           String userloginname = logininfo.getLoginName();
           String usernickloginname = logininfo.getLoginNickName();
           String userpassword = logininfo.getLoginPwd();
           //String firstname=value.
           System.out.println("用户对象value=========" + value);
           System.out.println("用户姓名username=========" + username);
           System.out.println("aaaaaaaaaaaaa" + username);
           //System.out.println("bbbbbbbb" + methodPost);
           System.out.println("1" + default1);
           System.out.println("2" + userdefault1);
           System.out.println("3" + userdefault2);
           System.out.println("4" + userdefault3);
           System.out.println("5" + userdefault4);
           System.out.println("6" + userdefault5);
           System.out.println("7" + userdefault6);
           System.out.println("8" + userdegree);
           System.out.println("9" + cardnum);
           System.out.println("用户登陆名==========" + userloginname);
           System.out.println("用户昵称=======" + usernickloginname);
           System.out.println("用户密码=====" + userpassword);
           try {
           System.out.println("ca数据取出完成");
           String data = "userName="+username+"&password="+userpassword+"&nickName=trsceshi&firstName="+username+"&lastName="+username+"&[email protected]";
    // 2、根据整串生成摘要签名
           System.out.println(data);
    MessageDigest md = MessageDigest.getInstance("MD5");
    System.out.println("开始加密");
    md.update(data.getBytes("UTF-8"));
    System.out.println("开始加密111111");
    byte[] digestByte = md.digest();
    // 2-1) 将生成的摘要转成16进制数表示
    System.out.println("开始加密222222");
    String digest = StringHelper.toString(digestByte);
    // 3、对整串进行加密处理
    // 3-1)对整串做base64编码(去编码化)
    System.out.println("开始加密33333");
    String base64Encoded = new String(Base64.encode(data.getBytes("UTF-8")));
    System.out.println("开始加密4444");
    // 3-3) 对data进行加密处理 并将结果转换成16进制表示
    String dataAfterDESEncode =DesEncryptUtil.encryptToHex(base64Encoded.getBytes("UTF-8"),"12345678");
    // 4、将摘要签名和加密后的参数拼接成最终提交IDS的参数
    System.out.println("开始加密5555");
    String finalData = digest+"&"+dataAfterDESEncode;
    System.out.println("开始提交");
    PostMethod methodPost = null;
    methodPost = new PostMethod(serviceUrl);
    // 构造提交的参数
    //methodPost.setRequestHeader("Connection", "close"); 
    methodPost.addParameter("appName","SynchBJCA");
    methodPost.addParameter("manageServiceTag","managerAddUser");
    //methodPost.addParameter("version","v5.0");
     methodPost.addParameter("data", finalData);
    //methodPost.addParameter("password","trsadmin123");
    //methodPost.addParameter("nickName","test");
     HttpClient httpClient = buildHttpClient();
    // 向服务器发送HTTP Post请求
    String responsePost = null;
    System.out.println("写入数据");

    System.out.println("111111111111");
    httpClient.executeMethod(methodPost);
    System.out.println("222222222" );
    System.out.println("关闭连接");

    httpClient.getHttpConnectionManager().closeIdleConnections(0);
    methodPost.releaseConnection();
    //((SimpleHttpConnectionManager)httpClient.getHttpConnectionManager()).shutdown(); 
    } catch (HttpException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (NoSuchAlgorithmException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();

     System.out.println("finished");
         }
         catch (RemoteException ex) {
           ex.printStackTrace();
         }
         bolret = true;
         return true;
        }    if (operateID == 12) {
          //修改用户信息
               return true;
        }
        if (operateID == 13) {
          //删除用户信息
               return true;
        }    /********************************机构*********************************************/
        if (operateID == 41) {
          cn.gov.bjxch.ca.uumsinterface.services.Department.DepartmentSoapBindingStub binding;
          try {
              binding = (cn.gov.bjxch.ca.uumsinterface.services.Department.DepartmentSoapBindingStub)
                            new cn.gov.bjxch.ca.uumsinterface.services.Department.DepartmentServiceLocator().getDepartment();
          }
          catch (javax.xml.rpc.ServiceException jre) {
              if(jre.getLinkedCause()!=null)
                  jre.getLinkedCause().printStackTrace();
              throw new junit.framework.AssertionFailedError("JAX-RPC ServiceException caught: " + jre);
          }      // Time out after a minute
          binding.setTimeout(60000);      // Test operation
          com.bjca.uums.client.bean.DepartmentInformation Dvalue = null;
          String departname = "";
          try {
            Dvalue = binding.findDepartByDepartCodeForDC(operateCode);
            departname = Dvalue.getDepartName();
            bolret = true;
          }
          catch (RemoteException ex2) {
            ex2.printStackTrace();
          }
               return true;
        }
        if (operateID == 42) {
          //修改机构信息
               return true;
        }
        if (operateID == 43) {
          //删除机构信息
               return true;
        }     return true;
      }private HttpClient buildHttpClient() {
    // TODO Auto-generated method stub
    HttpClient http=new HttpClient();
    return http;
    }
    }
      

  2.   

    调用SynchronizedUserInfo()方法,程序运行到
    httpClient.executeMethod(methodPost);
    就不往下运行了,因为我输出的2222222没有输出