java - linux执行jar访问axis接口错误
PHP中文网
PHP中文网 2017-04-17 17:38:46
0
1
418

package test;
import java.rmi.RemoteException;
import javax.xml.namespace.QName;
import javax.xml.rpc.ServiceException;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

public class TstCall {

public static void main(String[] args) throws ServiceException, RemoteException {
    //初始化参数
    String chgKind = "1"; // 1:增加;2:变更
    String workNo = "CY_yy" ;
    String workNAme = "白莉";
    String mobile = "15133333333";
    String dealerId = "920301832";
    String chgDate = "20160302";
    String YGZurl = null ;
    //创建服务
    Service YGZservice = new Service();
    //创建调用句柄
    Call YGZcall = (Call) YGZservice.createCall();
    //设置请求地址
    YGZcall.setTargetEndpointAddress(YGZurl);
    YGZcall.setOperationName(new QName(null, "IfService"));
    try 
    { 
        Object o =YGZcall.invoke(new Object[] { "","123","Service","",
                "<request><userlist><user><systemtype note=\"sour\">1</systemtype><kind note=\"chg\">"+chgKind+"</kind>"
                        +"<id note=\"num\">"+workNo+"</id><name note=\"numname\">"+workNAme+"</name><limit note=\"pp\">1</limit>"
                        +"<tel note=\"tel\">"+mobile+"</tel><belongfkid note=\"dealerID\">"+dealerId+"</belongfkid><starttime note=\"chgtime\">"+chgDate+"</starttime>"
                        +"</user></userlist></request>" });
    }catch(Exception e) { 
        e.printStackTrace();  
    }  
}

}

在window下执行都正常,但是在linux下执行报错:
执行语句:
java -jar -Djava.ext.dirs=/home/oracle/xf_everyday_check_p/javajar/lib/ test.jar
报错日志:
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 java.security.SecureRandom.nextBytes(SecureRandom.java:292)
    at org.apache.axis.utils.SessionUtils.generateSessionId(SessionUtils.java:62)
    at org.apache.axis.SOAPPart.&lt;init&gt;(SOAPPart.java:164)
    at org.apache.axis.Message.setup(Message.java:377)
    at org.apache.axis.Message.&lt;init&gt;(Message.java:246)
    at org.apache.axis.client.Call.invoke(Call.java:2425)
    at org.apache.axis.client.Call.invoke(Call.java:2366)
    at org.apache.axis.client.Call.invoke(Call.java:1812)
    at test.TstLinux.main(TstLinux.java:56)

    {http://xml.apache.org/axis/}hostname:LN-CRM-APP

java.lang.NullPointerException

    at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
    at org.apache.axis.client.Call.invoke(Call.java:1828)
    at test.TstLinux.main(TstLinux.java:56)

Caused by: java.lang.NullPointerException

    at java.security.SecureRandom.nextBytes(SecureRandom.java:292)
    at org.apache.axis.utils.SessionUtils.generateSessionId(SessionUtils.java:62)
    at org.apache.axis.SOAPPart.<init>(SOAPPart.java:164)
    at org.apache.axis.Message.setup(Message.java:377)
    at org.apache.axis.Message.<init>(Message.java:246)
    at org.apache.axis.client.Call.invoke(Call.java:2425)
    at org.apache.axis.client.Call.invoke(Call.java:2366)
    at org.apache.axis.client.Call.invoke(Call.java:1812)
    ... 1 more
PHP中文网
PHP中文网

认证高级PHP讲师

membalas semua(1)
左手右手慢动作

Memandangkan java.security.SecureRandom bergantung pada /dev/random pada Linux (lihat di sini untuk mekanisme penjanaan nombor rawak Linux), jalankan skrip ujian selepas menjalankan program ujian pada pelayan di mana masalah itu berlaku berikut:
[ java] lihat salinan biasa

  1. haitao-yao@haitaoyao-laptop:/data/develop/java/jre/lib/security$ jps && lsof /dev/random

  2. 7399 Jps

  3. 7382 TestRandom

  4. PERINTAH PID PENGGUNA JENIS FD SAIZ PERANTI/MATI NAMA NOD

  5. java 7382 haitao-yao 4r CHR 1,8 0t0 4402 /dev/random

Jadi disimpulkan bahawa ia adalah disebabkan oleh masalah dengan strategi penjanaan nombor rawak.

Google menjumpai pepijat ini di jeti (Jetty HashSessionIdManager terhenti semasa permulaan seseorang juga telah membangkitkan isu ini dalam pangkalan data pepijat jdk (lihat di sini pengenalan ringkas:
java.security.SecureRandom bergantung pada /). dev/random menjana nombor rawak, yang boleh menyebabkan jdk membeku apabila menggunakan /dev/random disebabkan gangguan sistem yang tidak mencukupi. Jeti tidak boleh dimulakan, akhirnya menyebabkan keseluruhan nod nama menjadi beku semasa dimulakan.

Penyelesaian juga telah diberikan dalam pangkalan data pepijat matahari, iaitu menambah: -Djava.security.egd=file:/dev/urandom kepada parameter permulaan program java dan gunakan /dev/urandom untuk menjana nombor rawak.

Untuk analisis perbezaan antara /dev/random dan /dev/urandom, sila lihat di sini, tiada butiran lanjut.

Ringkasan:
Hadoop menyediakan halaman HTML melalui protokol http untuk mendedahkan keadaan dalaman sistem Ini adalah ciri yang sangat baik dalam reka bentuk sistem teragih, tetapi disebabkan penyepaduan jeti, jeti bersepadu adalah. boleh dikonfigurasikan dalam hadoop Dia tidak kuat, jadi masalah ini terdedah. Saya benar-benar tidak faham mengapa Hadoop tidak menggunakan benang yang berasingan untuk memulakan jeti dalaman Lagipun, ini bukan fungsi utama nod nama, kerana fungsi sampingan sedemikian mempengaruhi fungsi teras sistem, yang tidak bernilai. keuntungan itu.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan