import java.io.BufferedReader;
站在用戶的角度思考問題,與客戶深入溝通,找到南和網(wǎng)站設(shè)計與南和網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站制作、網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、空間域名、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋南和地區(qū)。
import java.io.File;
import java.io.FileReader;
/**
* @author lmq
*
*/
public class RemoteFile {
public static void main(String[] args) throws Exception {
File remoteFile = new File("http://192.168.7.146/test/1.txt");// 192.168.7.146是對方機器IP,test是對方那個共享文件夾名字,如果沒有共享是訪問不到的
//遠程文件其實主要是地址,地址弄對了就和本地文件沒什么區(qū)別 ,windows里面//或者\\\\開頭就表示這個文件是網(wǎng)絡(luò)路徑了其實這個地址就像我們再windows里面,點擊開始
//然后點擊運行,然后輸入 \\192.168.7.146/test/1.txt訪問遠程文件一樣的
BufferedReader br = new BufferedReader(new FileReader(remoteFile));
String str;
while ((str = br.readLine()) != null) {
System.out.println(str);
}
br.close();
}
}
希望能幫到你。
1. 遠程debug調(diào)試java代碼
1.1 主動連接調(diào)試
首先需要遠程服務(wù)配置啟動腳本:
JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000"
如果是啟動jar包,指令:
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 -jar test.jar
這里-Xdebug是通知JVM工作在DEBUG模式下,-Xrunjdwp是通知JVM使用(java debug wire protocol)來運行調(diào)試環(huán)境。
transport是監(jiān)聽Socket端口連接方式(也可以dt_shmem共享內(nèi)存方式,但限于windows機器,并且服務(wù)提供端和調(diào)試端只能位于同一臺機)。
server=y表示當前是調(diào)試服務(wù)端,=n表示當前是調(diào)試客戶端。suspend=n表示啟動時不中斷(如果啟動時中斷,一般用于調(diào)試啟動不了的問題)。
address=8000表示本地監(jiān)聽8000端口。
遠程服務(wù)(tomcat/jboss)啟動成功后,本地Eclipse對需要調(diào)試的地方打上斷點,
然后項目右鍵啟動遠程調(diào)試:Debug as-Debug Configurations-Remote Java Application。
Host為遠程主機IP,Port為遠程監(jiān)聽調(diào)試端口,Connection Type為:Standard(Socket Attach),
點擊Debug,然后打斷點,遠程服務(wù)運行到斷點處本地就會中斷,然后進行調(diào)試。
1.2 被動連接調(diào)試
首先需要Eclipse配置監(jiān)聽,如主動連接調(diào)試的Eclipse配置圖片,Connection Type選擇:
Standard(Socket Listen),配置本地監(jiān)聽端口,比如默認8000。點擊Debug開始等待遠程連接調(diào)試。
然后配置遠程服務(wù)啟動腳本:
JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,address=127.0.0.1:8000,suspend=y"
如果是調(diào)試jar包,指令:
java -Xdebug -Xrunjdwp:transport=dt_socket,address=127.0.0.1:8000,suspend=y -jar remoting-debug.jar
參數(shù)含義和主動連接調(diào)試一樣,只是這里suspend=y表示啟動時就中斷,需要連接本地IDE調(diào)試啟動。
address=ip:port,ip需要修改為本地的對外IP。
這樣遠程項目啟動時就連接到本地,方便調(diào)試項目啟動不了的問題。
項目的部署方式有在本地搭建服務(wù)器進行啟動或是debug,或是將項目在遠程服務(wù)器上面部署。一般如果在本地搭建服務(wù)器的時候,可以直接選擇啟動或是直接debug,但是如果項目部署在遠程的服務(wù)器上面的時候, 我們該如何進行調(diào)試呢?而一些大公司的項目是不需要在本地搭建應(yīng)用服務(wù)器的,為了環(huán)境統(tǒng)一,應(yīng)用服務(wù)器都是在遠程服務(wù)器上面,這時我們就需要用遠程debug,通過遠程服務(wù)器的ip地址和遠程開啟的debug端口進行調(diào)試:
1.首先把遠程服務(wù)器上面需要調(diào)試的代碼放在IDE里面
2.在菜單欄選擇run -edit Configuration,點擊+號,選擇remote,然后在配置項里面輸入遠程需要調(diào)試機器的IP地址和所對應(yīng)的端口號,最后在最上面輸入該次一遠程調(diào)試的項目名字,方便自己區(qū)分不同的項目
3.將配置項中的-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5080添加到JAVA_OPTS的屬性中,重啟遠程tomcat服務(wù)器
3.再次選擇菜單條run按鈕,找到debug+“自己設(shè)置的項目名字”,點擊然后就可以進行遠程debug調(diào)試
4.在本地項目中設(shè)置斷點,然后訪問遠程機器上面的IP和端口,然后就可以在本地debug調(diào)試了
1、使用java代碼通過ssh登陸linux并執(zhí)行命令,正常情況下sshd服務(wù)都會有,知道用戶密碼就可以使用這種方式了。
2、要在遠程linux服務(wù)器上執(zhí)行命令,可以在linux服務(wù)器上啟動一個服務(wù)做執(zhí)行腳本的代理,不斷接受來自你這個項目發(fā)來的腳本信息,然后執(zhí)行,再把結(jié)果返回給你項目中去。
第一種:以消息隊列的方式發(fā)送這些腳本信息,linux代理不斷接受,并返回結(jié)果。項目同時要不斷接受結(jié)果。
第二種:項目中產(chǎn)生的腳本,直接記錄到數(shù)據(jù)庫,linux上的代理訪問這個數(shù)據(jù)庫,獲取腳本信息,并將執(zhí)行結(jié)果寫入數(shù)據(jù)庫。項目中輪詢執(zhí)行結(jié)果。
上面我說的消息隊列可以采用activemq,或者rabbitmq這些。
命令執(zhí)行,java中直接Runtime.getRuntime().exec(command);就行了。
Java 遠程處理
Java遠程方法調(diào)用(RMI)提供了Java程序語言的遠程通訊功能,這種特性使客戶機上運行的程序可以調(diào)用遠程服務(wù)器上的對象,使Java編程人員能夠在網(wǎng)絡(luò)環(huán)境中分布操作。
創(chuàng)建一個簡單的Java分布式遠程方法調(diào)用程序可以按以下幾個步驟操作,
一、定義遠程接口:
在 Java 中,遠程對象是實現(xiàn)遠程接口的類的實例, 遠程接口聲明每個要遠程調(diào)用的方法。在需要創(chuàng)建一個遠程對象的時候,我們通過傳遞一個接口來隱藏基層的實施細節(jié),客戶通過接口句柄發(fā)送消息即可。
遠程接口具有如下特點:
1) 遠程接口必須為public屬性。如果不這樣,除非客戶端與遠程接口在同一個包內(nèi),否則 當試圖裝入實現(xiàn)該遠程接口的遠程對象時,調(diào)用會得到錯誤結(jié)果。
2) 遠程接口必須擴展接口java.rmi.Remote。
3) 除與應(yīng)用程序本身特定的例外之外,遠程接口中的每個方法都必須在自己的throws從句中 聲明java.rmi.RemoteException。(或 RemoteException 的父類)。
4) 作為參數(shù)或返回值傳遞的一個遠程對象(不管是直接,還是本地對象中嵌入)必須聲明為遠 程接口,而不應(yīng)聲明為實施類。
下面是遠程接口的定義
[java] view plaincopy
package test;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.math.BigInteger;
public interface Fib extends Remote {
public int getFib(int n) throws RemoteException;
// public BigInteger getFib(BigInteger n) throws RemoteException;
}
二、實現(xiàn)遠程接口:
遠程對象實現(xiàn)類必須擴展遠程對象java.rmi.UnicastRemoteObject類,并實現(xiàn)所定義的遠程接口。遠程對象的實現(xiàn)類中包含實現(xiàn)每個遠程接口所指定的遠程方法的代碼。這個類也可以含有附加的方法,但客戶只能使用遠程接口中的方法。因為客戶是指向接口的一個句柄,而不是它的哪個類。必須為遠程對象定義構(gòu)造函數(shù),即使只準備定義一個默認構(gòu)造函數(shù),用它調(diào)用基礎(chǔ)類構(gòu)造函數(shù)。因為基礎(chǔ)類構(gòu)造函數(shù)可能會拋出 java.rmi.RemoteException,所以即使別無它用必須拋出java.rmi.RemoteException例外。
以下是遠程對象實現(xiàn)類的聲明:
[java] view plaincopy
package test;
import java.math.BigInteger;
import java.rmi.*;
import java.rmi.server.UnicastRemoteObject;
public class FibImp extends UnicastRemoteObject implements Fib {
public FibImp() throws RemoteException {
super();
}
public int getFib(int n) throws RemoteException {
return n+2;
}
}
三、編寫服務(wù)器類:
包含 main 方法的類可以是實現(xiàn)類自身,也可以完全是另一個類。下面通過RmiSampleServer 來創(chuàng)建一個遠程對象的實例,并通過java.rmi.registry.LocateRegistry類的createRegistry 方法從指定端口號啟動注冊服務(wù)程序,也可以通過執(zhí)行 rmiregistry 命令啟動注冊服務(wù)程序,注冊服務(wù)程序的缺省運行端口為 1099。必須將遠程對象名字綁定到對遠程對象的引用上: Naming.rebind("http://localhost:8808/SAMPLE-SERVER" , Server);
以下是服務(wù)器類的聲明:
[java] view plaincopy
package test;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
public class FibonacciServer {
/**
* @param args
*/
public static void main(String[] args) {
try {
LocateRegistry.createRegistry(8804);
FibImp f = new FibImp();
// 注冊到 registry 中
Naming.rebind("http://localhost:8804/SAMPLE-SERVER", f);
System.out.println("fib server ready");
} catch (RemoteException re) {
System.out.println("Exception in FibonacciImpl.main: " + re);
} catch (MalformedURLException e) {
System.out.println("MalformedURLException " + e);
}
}
}
四、編寫使用遠程服務(wù)的客戶機類:
客戶機類的主要功能有兩個,一是通過Naming.lookup方法來構(gòu)造注冊服務(wù)程序 stub 程序?qū)嵗?,二是調(diào)用服務(wù)器遠程對象上的遠程方法。
以下是客戶端類的聲明:
[java] view plaincopy
package testClient;
import test.Fib;
import java.math.BigInteger;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
public class FibClient {
/**
* @param args
*/
public static void main(String[] args) {
String url = "http://localhost:8804/SAMPLE-SERVER";
try {
Fib calc = (Fib) Naming.lookup(url);
for (int i = 0; i 10; ++i) {
int f = calc.getFib(i);
System.out.println(f);
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
} catch (NotBoundException e) {
e.printStackTrace();
}
}
}
網(wǎng)站名稱:java遠程代碼包含 java遠程開發(fā)工作
當前URL:http://muchs.cn/article16/hphddg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、微信小程序、網(wǎng)站設(shè)計公司、用戶體驗、網(wǎng)站排名、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)