A. java啟動windows本地服務
Runtime.getRuntime().exec("cmd.exe /c net start MySQL");
這樣試試
B. java之間如何調用服務呢急急急急
同一網路電腦A啟動服務就行了
C. java中用命令關閉服務
執行命令行
net stop 服務名
D. java用什麼伺服器
Java 的應用伺服器很多,從功能上分為兩大類,JSP 伺服器和 Java EE 伺服器,也可分其他小類。
JBoss AS
在J2EE應用伺服器領域,Jboss是發展最為迅速的應用伺服器。由於Jboss遵循商業友好的LGPL授權分發,並且由開源社區開發,這使得Jboss廣為流行。另外,Jboss應用伺服器還具有許多優秀的特質。
其一,它將具有革命性的JMX微內核服務作為其匯流排結構;
其二,它本身就是面向服務的架構(Service-Oriented Architecture,SOA);
其三,它還具有統一的類裝載器,從而能夠實現應用的熱部署和熱卸載能力。因此,它是高度模塊化的和松耦合的。Jboss用戶的積極反饋告,Jboss應用伺服器是健壯的、高質量的,而且還具有良好的性能。 為滿足企業級市場日益增長的需求,Jboss公司從2003年開始就推出了24*7、專業級產品支持服務。同時,為拓展Jboss的企業級市場,Jboss公司還簽訂了許多渠道合作夥伴。比如,Jboss公司同HP、Novell、Computer Associates、Unisys等都是合作夥伴。
JOnAS
JOnAS是一個開放源代碼的J2EE實現,在ObjectWeb協會中開發。整合了Tomcat或Jetty成為它的Web容器,以確保符合Servlet 2.3和JSP 1.2規范。JOnAS伺服器依賴或實現以下的Java API:JCA、JDBC、JTA 、JMS、JMX、JNDI、JAAS、JavaMail 。
JFox3.0
JFox 是 Open Source Java EE Application Server,致力於提供輕量級的Java EE應用伺服器,從3.0開始,JFox提供了一個支持模塊化的MVC框架,以簡化EJB以及Web應用的開發! 如果您正在尋找一個簡單、輕量、高效、完善的Java EE開發平台
E. java可以提供哪些服務
那可多了,java程序放電腦上可以提供個可執行程序,比如畫圖板啊,photoshop啊等等,也可提供個網站伺服器,比如美團啊,網路啊。放一些單片機硬體可提供智能硬體,比如安卓手機啊,智能手錶啊,智能冰箱啊,智能安防系統啊。放其他硬體上,比如機器人上還能提供大保健服務呢。只有你想不到沒有java做不到。
F. java服務開啟自動啟動
去Apache官網下載那種可以製作成服務的tomcat,並將其做成服務
,將你的程序部署在已經被做成服務的tomcat里,並且將該tomcat服務設置為開機啟動即可,我的就是這么做的;
G. java怎麼樣寫一個服務
把java程序注冊到windows系統服務,相關文檔和源碼。
H. 如何注冊java程序為windows服務
這里介紹下如何利用javaService 軟體把java 程序注冊為windows 服務。
一、 利用javaService 注冊java 程序為windows 服務
[1] 下載javaService
訪問網址http://javaservice.objectweb.org/ 下載windows 版本的javaService 文件,我下載的是JavaService-2.0.10.rar ,目前最新的版本就是「2.0.10 」。
[2] 安裝javaService
解壓我們下載下來的javaServices 到一個目錄,我是解壓到目錄「D:/software/JavaService-2.0.10 」下(解壓到任何目錄都可以,最好別解壓到中文目錄,省的出現問題 )
[3] 編寫定時關機代碼,見第二章的定時關機代碼
1) 具體代碼參加第二章,類的名字為:
com.test.timer.TimerShutDownWindows
2) 把編寫後的java 文件導出為class 的形式,把導出的類放到目錄「D:/software/JavaService-2.0.10/classes/com/test/timer 」下。也就是把導出的com 包放到
「D:/software/JavaService-2.0.10/classes」 目錄下。
[4] 注冊java 程序為windows 服務
進入「D:/software/JavaService-2.0.10 「目錄,執行如下命令:
JavaService.exe -install MyShutDownService "%JAVA_HOME%"/jre/bin/server/jvm.dll -Djava.class.path="%JAVA_HOME%"/lib/tools.jar;D:/software/JavaService-2.0.10/classes -start com.test.timer.TimerShutDownWindows
其中「-install 「後面的參數為服務的名稱,「-start 」參數後邊是要啟動的類名,「Djava.class.path 」後面參數中的
「D:/software/JavaService-2.0.10/classe 」地址是我的「TimerShutDownWindows 」類存放的路徑,實際應用中修改為自己的classPath 即可。
這里需要注意幾點:
1) 「%JAVA_HOME% 」jdk 目錄,如果沒有配置jdk 目錄,則替換為jdk 的實際絕對地址。
2) -Djava.class.path 是必須的,因為服務啟動的時候無法訪問系統的CLASSPATH 變數,所以必須在這里聲明;如果jar 比較多,為避免寫的命令過長,我們可以使用「-Djava.ext.dirs=jars 所在目錄」參數。
3) 服務添加之後,可以在命令行中敲入「services.msc 」命令來查看所有服務,並可以對服務的啟動類型(自動啟動還是手動啟動等)進行修改。
[5] 測試
1) 啟動服務
當我們注冊完服務後,我們可以通過命令「net start MyShutDownService 」來啟動該服務,服務啟動後會在D 盤根目錄生成my_shutdown.log 日誌文件。
2) 關閉服務
如果我們要關閉服務,可以通過命令「net stop MyShutDownService 」來關閉該服務。
3) 刪除服務
當我們想刪除該服務時,可以使用命令「sc delete MyShutDownService 」來刪除該服務。
二、 定時關機代碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
package com.test.timer;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class TimerShutDownWindows {
/* 檢測是否需要關機的時間間隔 */
private static long m_nDetectInterval = 5000;
/* 記錄上次檢測的時間,以毫秒為單位 */
private static long m_lLastMilliSeconds = 0;
/* 可以使用電腦的最小小時 */
private static int m_nUsePCMinHour = 17;
/* 可以使用電腦的最大小時 */
private static int m_nUseComputerMaxHour = 23;
/* 如果分鍾超過這個時間,則關機計算機 */
private static int m_nMinutes = 25;
/* 記錄日誌的文件的保存位置 */
private static String m_sLogFile = "D:" + File.separator
+ "my_shutdown.log";
/* 記錄當前系統是否已經啟動自動關閉程序 */
private static boolean bHasShutDownPC = false;
/**
* @param args
*/
public static void main(String[] args) {
// 1. 單獨開啟一個線程去檢測
Thread aThread = new Thread(new TimerDetector());
aThread.start();
}
/**
* 定義內部類
*
* @author Administrator
*
*/
static class TimerDetector implements Runnable {
/*
* (non-Javadoc)
*
* @see java.lang.Runnable#run()
*/
public void run() {
// 1. 獲取日誌文件
PrintWriter out = null;
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
out = new PrintWriter(new FileWriter(m_sLogFile, true), true);
} catch (IOException e1) {
out = null;
e1.printStackTrace();
}
// 2. 記錄服務啟動時間
appendLog(out, " 服務啟動時間:" + df.format(new Date()));
while (true) {
// 1. 判斷當前系統時間是否被修改過
boolean bShoudShutDownPC = validateShoudShutDownPC(out);
if (bShoudShutDownPC) {
// 驗證沒通過,強制關機
exectueShutDown(out);
} else {
bHasShutDownPC = false;
}
// 2. 當前線程休眠下
try {
Thread.sleep(m_nDetectInterval);
} catch (InterruptedException e) {
appendLog(out, e.getMessage());
}
}
}
/**
* 驗證當前時間是否是需要關機的時間
*
* @return
*/
private boolean validateShoudShutDownPC(PrintWriter _out) {
// 1. 判斷是否修改了系統時間
boolean bHasModifySystemTime = detectModifySytemTime(_out);
appendLog(_out, "bHasModifySystemTime :" + bHasModifySystemTime);
if (bHasModifySystemTime) {
return bHasModifySystemTime;
}
// 2. 沒有修改系統時間,則判斷當前時間是否超過了指定的時間
boolean bShoudSleep = nowIsSleepTime();
appendLog(_out, "bShoudSleep :" + bShoudSleep);
if (bShoudSleep) {
return bShoudSleep;
}
return false;
}
/**
* 判斷當前時間是否應該休息的時間
*
* @return
*/
private boolean nowIsSleepTime() {
// 1. 獲取當前小時和分鍾
Calendar aCalendar = Calendar.getInstance();
int nHour = aCalendar.get(Calendar.HOUR_OF_DAY);
int nMinute = aCalendar.get(Calendar.MINUTE);
// 2. 判斷當前小時是否在可以使用PC 的時間內, 最大小時為23
if (nHour < m_nUsePCMinHour) {
return true;
}
// 23 點需要單獨判斷,超過23 點30 就應該休息
if ((nHour >= m_nUseComputerMaxHour) && (nMinute >= m_nMinutes)) {
return true;
}
// 3. 非休息時間
return false;
}
/**
* 判斷是否有人修改了系統時間,如果有人修改了系統時間返回true ,
* 否則返回false
*
* @return
*/
private boolean detectModifySytemTime(PrintWriter _out) {
// 1. 第一次檢測系統時間
if (m_lLastMilliSeconds == 0) {
m_lLastMilliSeconds = System.currentTimeMillis();
return false;
}
// 2. 檢測兩次時間的差值
long lInteral = System.currentTimeMillis() - m_lLastMilliSeconds;
lInteral = Math.abs(lInteral);
// 3. 判斷兩次的時間間隔, 兩次結果不一定完全等於 m_nDetectInterval ,允許誤差為1 分鍾
long lMaxInterval = m_nDetectInterval + 60 * 1000;
appendLog(_out, "lInteral :::" + lInteral);
appendLog(_out, "lMaxInterval :::" + lMaxInterval);
if (lInteral > lMaxInterval) {
// 有人修改了系統時間,強制關機
return true;
}
// 4. 只有沒人修改時間才記錄上次檢測時間
m_lLastMilliSeconds = System.currentTimeMillis();
return false;
}
/**
* 在指定的流中寫入日誌信息
*
* @param _outWriter
* @param _sAppendContent
*/
private void appendLog(PrintWriter _outWriter, String _sAppendContent) {
if (_outWriter == null) {
return;
}
_outWriter.println(_sAppendContent);
}
/**
* 執行關機命令
*/
private void exectueShutDown(PrintWriter _out) {
if (bHasShutDownPC) {
SimpleDateFormat df = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
appendLog(_out, " 系統即將關閉, 當前時間:" + df.format(new Date()));
return;
}
appendLog(_out, " 有人修改了系統時間,系統強制關機!");
// 關機
try {
Runtime.getRuntime().exec(
"shutdown -s -t 120 -c /" 很晚了,該睡覺了,2 分鍾後關閉計算機。/"");
} catch (IOException e) {
appendLog(_out, e.getMessage());
}
bHasShutDownPC = true;
}
}
}
I. java如何啟動一個服務
把tomcat服務 作為一個服務任務來條件運行或開機運行都可以 自動啟動Tomcat服務
J. java中層和service層的區別是什麼
層:層叫數據訪問層,全稱為data access object,屬於一種比較底層,比較基礎的操作,具體到對於某個表、某個實體的增刪改查
service層:service層叫服務層,被稱為服務,肯定是相比之下比較高層次的一層結構,相當於將幾種操作封裝起來。
至於為什麼service層要使用介面來定義有以下幾點好處:
在java中介面是多繼承的,而類是單繼承的,如果你需要一個類實現多個service,你用介面可以實現,用類定義service就沒那麼靈活
要提供不同的資料庫的服務時,我們只需要面對介面用不同的類實現即可,而不用重復地定義類
編程規范問題,介面化的編程為的就是將實現封裝起來,然調用者只關心介面不關心實現,也就是「高內聚,低耦合」的思想。
(10)java服務擴展閱讀:
Java Web,是用Java技術來解決相關web互聯網領域的技術總和。web包括:web伺服器和web客戶端兩部分。Java在客戶端的應用有java applet,不過使用得很少,Java在伺服器端的應用非常的豐富,比如Servlet,JSP和第三方框架等等。Java技術對Web領域的發展注入了強大的動力。