锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 鍏朵腑<username>涓轟綘瑕佸垱寤虹殑鐢ㄦ埛鍚嶇О銆?br> 濡傛灉鎯崇戶緇坊鍔犵敤鎴峰垯杈撳叆濡備笅鍛戒護錛?br> Syntax error on line 198 of C:/Program Files/Apache Group/Apache2/conf/httpd.conf: 鏇存敼閰嶇疆鏂囦歡絎?98琛屼負 #ServerAdmin 鐒跺悗鎶奱pache瑁呮垚WINDOWS鐨勬湇鍔★紝鏂規硶鏄繖鏍風殑銆傝繘鍏ュ埌C:/Program Files/Apache Group/Apache2/bin/鐩綍涓嬶紝鎵ц涓嬮潰鐨勫懡浠わ細apache -k install錛岃繖鏍穉pache灝卞仛涓簑indows鐨勪竴欏規湇鍔′簡錛屽啀鍚姩apache灝變笉鍑虹幇涓婇潰鐨勯敊璇彁紺轟簡銆?br>鏈鍚庣粓浜庢妸Apache緇欏惎鍔ㄨ搗鏉ヤ簡銆?br>
鏈漢鏈榪戠敱浜庡伐浣滈渶瑕佺爺絀朵簡涓浜汼VN鐨勯厤緗伐浣滐紝鍘熸潵閮芥槸鐢–VS鐨勬墍浠ヨ繕鏄渶瑕佸涔犱竴浜涚殑銆?br>
涓轟簡浣跨敤TortoiseSVN錛堟垨浠諱綍鍏朵粬Subversion瀹㈡埛绔級錛屼綘闇瑕佹斁緗綘鐨勭増鏈簱錛屼綘鍙互灝嗙増鏈簱瀛樹簬鏈湴騫朵嬌鐢?span class=emphasis>file://鍗忚璁塊棶錛屼篃鍙互鏀劇疆浜庢湇鍔″櫒錛屼嬌鐢?span class=emphasis>http://鎴?span class=emphasis>svn://璁塊棶錛岃繖涓ょ鏈嶅姟鍣ㄥ崗璁篃鍙互琚姞瀵嗭紝浣跨敤https://鎴?span class=emphasis>svn+ssh://銆?br>
1銆佸畨瑁匒pache
鍙互瀹夎鍒癢indows2000銆乄inXP+SP1榪樻槸Windows2003涓?br> a銆佷粠Apache緗戠珯http://httpd.apache.org/download.cgi涓嬭澆Apache錛屾渶濂芥槸楂樹簬2.0.54鐗堬紝浣嗕笉瑕佷笅杞芥渶鏂扮殑濡?.2.XX鍜?.1.XX鐨勩?br> 鎴戜笅杞界殑鏄?nbsp; apache_2.0.59-win32-x86-no_ssl.msi銆?br> b銆佷竴鏃︿綘鏈変簡Apache2瀹夎紼嬪簭錛屼綘鍙互鍙屽嚮瀹冿紝鐒跺悗瀹冧細鎸囧浣犵殑瀹夎榪囩▼錛岃紜浣犺緭鍏ョ殑server鐨刄RL姝g‘錛堝鏋滀綘鐨勬湇鍔″櫒娌℃湁dns鍚嶇О錛岃鐩存帴杈撳叆IP鍦板潃錛夈傚緩璁畨瑁匒pache涓烘墍鏈夌敤鎴鳳紝鍦?0绔彛錛屼綔涓轟竴涓湇鍔?/code>銆傛敞鎰?/span>錛氬鏋滀綘宸茬粡鏈変簡IIS鎴栧叾浠栫洃鍚?0孌靛彛鐨勭▼搴忥紝瀹夎浼氬け璐ワ紝濡傛灉鍙戠敓榪欑鎯呭喌錛岀洿鎺ュ埌紼嬪簭鐨勫畨瑁呯洰褰?code class=filename>\Apache Group\Apache2\conf
錛屾墦寮httpd.conf
銆傜紪杈戞枃浠剁殑Listen 80
涓哄叾浠栧彲鐢ㄧ殑绔彛錛屼緥濡?code class=literal>Listen 81錛岀劧鍚庨噸鏂板惎鍔紞榪欐牱灝變笉浼氶偅涓棶棰樹簡銆?br> c銆佺幇鍦ㄥ彲浠ユ祴璇旳pache鏈嶅姟鍣ㄤ簡錛屽皢嫻忚鍣ㄦ寚鍚?code class=systemitem>http://localhost錛堟垨ip+绔彛鍙鳳級/錛嶅皢浼氱湅鍒頒竴涓鍏堥厤緗殑緗戠珯銆?br>2銆佸畨瑁匰ubversion
a銆佷粠http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91涓嬭澆鏈鏂扮増鏈殑Subversion錛堟垜涓嬭澆鐨勬槸svn-1.4.3-setup.exe錛屼笌apache_2.0.59-win32-x86-no_ssl.msi鏄彔鑱旂挧鍚堬紒錛夈?br> b銆佽繍琛孲ubversion瀹夎紼嬪簭錛屽茍鏍規嵁鎸囧瀹夎錛屽鏋淪ubversion璁よ瘑鍒頒綘瀹夎浜咥pache錛屼綘灝卞嚑涔庡畬鎴愪簡宸ヤ綔銆?br>3銆侀厤緗?br> 鐜板湪浣犲凡緇忚緗簡Apache鍜孲ubversion錛屼絾鏄疉pache涓嶇煡閬撳浣曞鐞哠ubversion瀹㈡埛绔紝渚嬪TortoiseSVN銆備負浜嗚Apache鐭ラ亾鍝釜鐩綍鏄敤鏉ヤ綔涓篠ubversion鐗堟湰搴擄紝浣犻渶瑕佷嬌鐢ㄧ紪杈戝櫒錛堜緥濡傝浜嬫湰錛夌紪杈慉pache鐨勯厤緗枃浠訛紙閫氬父鏄?code class=filename>c:\program files\apache group\apache2\conf\httpd.conf錛夛細
a銆佸緩绔嬬増鏈簱
鍦―OS涓嬭緭鍏ヤ互涓嬪懡浠わ紙娉ㄦ剰錛氬厛寤虹珛 D:\SVN 鐩綍錛夛細
svnadmin create D:\SVN\repository
浜庢槸寤虹珛浜嗗悕涓簉epository鐨勭増鏈簱錛?span style="COLOR: red">D:\SVN 鐩綍涓轟互鍚庡鍔犲叾浠栨墍鏈夌増鏈簱鐨勭埗璺緞銆?br>
b銆佸湪閰嶇疆鏂囦歡鏈鍚庢坊鍔犲涓嬪嚑琛岋細
<Location /svn>
DAV svn
SVNListParentPath on
SVNParentPath D:\SVN
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile passwd
#AuthzSVNAccessFile svnaccessfile
Require valid-user
</Location>
榪欎釜閰嶇疆鍛婅瘔Apache浣犵殑鎵鏈夌殑Subversion鐗堟湰搴撳湪鐗╃悊涓婁綅浜?code class=filename>D:\SVN錛岀増鏈簱瀵瑰鐨刄RL鏄細
http://localhost錛堟垨ip+绔彛鍙鳳級/svn/
錛岃闂渶瑕佹枃浠?code class=filename>passwd涓殑鐢ㄦ埛/瀵嗙爜闄愬埗銆?/pre>
濡傛灉浣犲笇鏈涙墍鏈変漢鍙互璇諱綘鐨勭増鏈簱錛屼絾鏄彧鏈夌壒瀹氱敤鎴峰彲浠ュ啓錛屼綘鍙互淇敼涓嬮潰鍑犺
Require valid-user
涓猴細
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
c銆佷負浜嗗垱寤?code class=filename>passwd鏂囦歡錛屽啀嬈℃墦寮鍛戒護琛屾彁紺虹錛圖OS錛夛紝鏉ュ埌apache2鐩綍錛堥氬父鏄?code class=filename>c:\program files\apache group\apache2錛夐氳繃杈撳叆涓嬮潰鐨勫懡浠ゅ垱寤烘枃浠?/pre>
bin\htpasswd -c passwd <username>
bin\htpasswd passwd <username>
d銆佸啀嬈¢噸鍚疉pache鏈嶅姟銆?br>
e銆佸皢嫻忚鍣ㄦ寚鍚?code class=systemitem>http://localhost錛堟垨ip+绔彛鍙鳳級//svn/repository錛?code class=filename>repository鏄綘姝ゅ墠鍒涘緩鐨勭増鏈簱鍚嶏級錛屽鏋滀竴鍒囨甯革紝浣犱細琚彁紺鴻緭鍏ョ敤鎴峰悕鍜屽瘑鐮侊紝鐒跺悗浣犱細鐪嬪埌鐗堟湰搴撶殑鍐呭銆?br>
f銆佸鏋滀笉鑳借闂紝鍙兘鏄槻鐏鎴栨潃姣掕蔣浠舵妸80绔彛灞忚斀浜嗭紝鏇存敼httpd.conf涓殑绔彛鍙峰嵆鍙紝鎴栬緗槻鐏銆?/font>
QA:
瀹夎Apache 2.0.x 鐗堟湰甯歌閿欒閿欒錛?/p>
ServerAdmin takes one argument, The email address of the server administrator
Note the errors or messages above, and press the <ESC> key to exit. 24...
]]>
聽聽聽瀹炵幇姝ラ濡備笅錛?br />
1銆佷笅杞藉畨瑁匤boss鏈嶅姟鍣?br />
2銆佹柊寤虹珛java欏圭洰錛屽紩鍏boss瀹夎鐩綍 server\default\lib 涓殑 jboss.jar 鍜?jmx-adaptor-plugin.jar 鍖呭埌classpath涓?br />
3銆佸緩绔?RMIAdaptorHelper.java 綾伙紝鐢ㄤ簬澶勭悊榪滅▼璋冪敤錛屼唬鐮佸涓嬶細
package com.sample.jmxagent.jboss;
import java.io.Serializable;
import java.util.Properties;
import javax.management.ObjectName;
import javax.naming.CommunicationException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import org.jboss.jmx.adaptor.rmi.RMIAdaptor;
public class RMIAdaptorHelper
{
聽private String聽聽_rmiHost聽= "127.0.0.1";
聽private int聽聽聽_rmiPort聽= 1099;
聽private int聽聽聽_timeout聽= 2000;聽聽// ms
聽private RMIAdaptor聽_server;
聽public RMIAdaptorHelper(String rmiHost, int rmiPort, int timeout)
聽聽聽throws CommunicationException, NamingException
聽{
聽聽this._rmiHost = rmiHost;
聽聽this._rmiPort = rmiPort;
聽聽this._timeout = timeout;
聽}
聽/**
聽 * 榪滅▼璋冪敤 MBEAN
聽 */
聽public Object invoke(RmiInvokeObject rmido) throws Exception
聽{
聽聽ObjectName name = new ObjectName(rmido.getJndiname());
聽聽return _server.invoke(name, rmido.getMethodname(), rmido
聽聽聽聽.getMethodArgs(), rmido.getMethodArgsType());
聽}
聽/**
聽 * 榪炴帴 Jboss rmi 鏈嶅姟鍣?br />聽 */
聽public void connect() throws NamingException, CommunicationException
聽{
聽聽Properties prop = System.getProperties();
聽聽prop.put(Context.INITIAL_CONTEXT_FACTORY,
聽聽聽聽"org.jnp.interfaces.NamingContextFactory");
聽聽prop.put(Context.URL_PKG_PREFIXES,
聽聽聽聽"org.jboss.naming:org.jnp.interfaces");
聽聽prop.put(Context.PROVIDER_URL, "jnp://" + _rmiHost + ":" + _rmiPort);
聽聽prop.put("jnp.discoveryTimeout", String.valueOf(_timeout));
聽聽InitialContext ic = new InitialContext(prop);
聽聽if (_server != null)
聽聽{
聽聽聽System.out.println("RMIAdaptorHelper not null");
聽聽聽_server = null;
聽聽}
聽聽Object o = ic.lookup("jmx/rmi/RMIAdaptor");
聽聽_server = (RMIAdaptor) o;
聽}
聽/**
聽 * 榪滅▼璋冪敤鐨勫璞$被
聽 */
聽public class RmiInvokeObject implements Serializable
聽{
聽聽private String聽聽jndiname;
聽聽private String聽聽methodname;
聽聽private Object[]聽methodArgs;
聽聽private String[]聽methodArgsType;
聽聽public String getJndiname()
聽聽{
聽聽聽return jndiname;
聽聽}
聽聽public void setJndiname(String mbeanName)
聽聽{
聽聽聽this.jndiname = mbeanName;
聽聽}
聽聽public Object[] getMethodArgs()
聽聽{
聽聽聽return methodArgs;
聽聽}
聽聽public void setMethodArgs(Object[] methodArgs)
聽聽{
聽聽聽this.methodArgs = methodArgs;
聽聽}
聽聽public String[] getMethodArgsType()
聽聽{
聽聽聽return methodArgsType;
聽聽}
聽聽public void setMethodArgsType(String[] methodArgsType)
聽聽{
聽聽聽this.methodArgsType = methodArgsType;
聽聽}
聽聽public String getMethodname()
聽聽{
聽聽聽return methodname;
聽聽}
聽聽public void setMethodname(String methodname)
聽聽{
聽聽聽this.methodname = methodname;
聽聽}
聽}
}
4銆佸緩绔?FileObject.java 綾伙紝鐢ㄤ簬瀛樺偍鎵瑕佷紶杈撶殑鏂囦歡鍐呭錛屼唬鐮佸涓嬶細
package com.sample.upload.mbean;
import java.io.Serializable;
public class FileObject implements Serializable
{
聽public byte[]聽fileContent;
}
5銆佸緩绔?FileUploadMBean.java 鎺ュ彛錛岀敤浜?Jboss 璋冪敤錛屼唬鐮佸涓嬶細
package com.sample.upload.mbean;
public interface FileUploadMBean
{
聽public boolean uploadFile(String fileName, FileObject fo) throws Exception;
}
6銆佸緩绔?FileUpload.java 綾伙紝鐢ㄤ簬瀹炵幇FileUploadMBean 鎺ュ彛錛屼唬鐮佸涓嬶細
package com.sample.upload.mbean;
import java.io.File;
import java.io.FileOutputStream;
import java.net.URI;
public class FileUpload implements FileUploadMBean
{
聽聽聽 public static final String JBOSS_SERVER_BASE_URL = "jboss.server.base.url";
聽聽聽 public static final String JBOSS_SERVER_NAME = "jboss.server.name";
聽聽聽 public static final String JBOSS_SERVER_PATH = System.getProperty(JBOSS_SERVER_BASE_URL)+ System.getProperty(JBOSS_SERVER_NAME);
聽聽聽 public static final String NODE_ADAPTOR_PATH = JBOSS_SERVER_PATH + "/";
聽聽聽
聽private FileOutputStream聽fos聽= null;
聽private File聽聽聽聽f聽= null;
聽public boolean uploadFile(String fileName, FileObject fo) throws Exception
聽{
聽聽boolean returnValue = false;
聽聽try
聽聽{
聽聽聽// 鍦?Jboss 鐨?server\default 鐩綍涓嬫柊寤虹珛鏂囦歡
聽聽聽f = new File(new URI( NODE_ADAPTOR_PATH + fileName));
聽聽聽f.createNewFile();
聽聽聽fos = new FileOutputStream(f);
聽聽聽fos.write(fo.fileContent);
聽聽聽returnValue = true;
聽聽}
聽聽catch (Exception ex)
聽聽{
聽聽聽ex.printStackTrace();
聽聽聽throw ex;
聽聽}
聽聽finally
聽聽{
聽聽聽if (fos != null)
聽聽聽{
聽聽聽聽try
聽聽聽聽{
聽聽聽聽聽fos.close();
聽聽聽聽}
聽聽聽聽catch (Exception ee)
聽聽聽聽{
聽聽聽聽聽ee.printStackTrace();
聽聽聽聽}
聽聽聽}
聽聽}
聽聽return returnValue;
聽}
}
7銆佸緩绔?TestFileUpload.java 綾伙紝鐢ㄤ簬嫻嬭瘯鏂囦歡涓婁紶錛屼唬鐮佸涓嬶細
package com.sample.upload.test;
import java.io.File;
import java.io.FileInputStream;
import com.sample.jmxagent.jboss.RMIAdaptorHelper;
import com.sample.upload.mbean.FileObject;
public class TestFileUpload
{
聽private static RMIAdaptorHelper聽rah;
聽/**
聽 * 鍚?Jboss 涓婁紶鎸囧畾鐩綍鐨勬枃浠?br />聽 */
聽public static void uploadFile(String fileName) throws Exception
聽{
聽聽File f = new File(fileName);
聽聽byte[] b = new byte[(int) f.length()];
聽聽FileInputStream fis = new FileInputStream(f);
聽聽try
聽聽{
聽聽聽fis.read(b);
聽聽聽FileObject fo = new FileObject();
聽聽聽fo.fileContent = b;
聽聽聽RMIAdaptorHelper.RmiInvokeObject rmido = rah.new RmiInvokeObject();
聽聽聽rmido.setJndiname("com.sample.remotedeploy.mbean.control:service=FileUpload");
聽聽聽rmido.setMethodname("uploadFile");
聽聽聽rmido.setMethodArgsType(new String[]{"java.lang.String",
聽聽聽聽聽"com.sample.upload.mbean.FileObject"});
聽聽聽rmido.setMethodArgs(new Object[]{f.getName(), fo});
聽聽聽rah.invoke(rmido);
聽聽}
聽聽catch (Exception ex)
聽聽{
聽聽聽ex.printStackTrace();
聽聽}
聽聽finally
聽聽{
聽聽聽if (fis != null)
聽聽聽{
聽聽聽聽try
聽聽聽聽{
聽聽聽聽聽fis.close();
聽聽聽聽}
聽聽聽聽catch (Exception ee)
聽聽聽聽{
聽聽聽聽聽ee.printStackTrace();
聽聽聽聽}
聽聽聽}
聽聽}
聽}
聽public static void main(String[] args)
聽{
聽聽try
聽聽{
聽聽聽rah = new RMIAdaptorHelper("127.0.0.1", 1099, 5000);
聽聽聽// 榪炴帴 Jboss rmi 鏈嶅姟鍣?br />聽聽聽rah.connect();
聽聽聽// 鍚?Jboss 涓婁紶鎸囧畾鐩綍鐨勬枃浠?br />聽聽聽uploadFile(args[0]);
聽聽}
聽聽catch (Exception e)
聽聽{
聽聽聽e.printStackTrace();
聽聽}
聽聽System.exit(0);
聽}
}
8銆佸湪Jboss鐨勫畨瑁呯洰褰晄erver\default\deploy涓嬪緩绔?com.sample.sar\META-INF鐩綍錛屽茍鍦ㄥ叾涓嬪緩绔嬩袱涓枃浠秊boss-service.xml 鍜?MANIFEST.MF 錛岀敤浜庢妸鏂規硶閮ㄧ講鍒癑boss涓紝jboss-service.xml 浠g爜濡備笅錛?br />
<?xml version="1.0" encoding="UTF-8"?>
<server>
聽<mbean
聽聽code="com.sample.upload.mbean.FileUpload"
聽聽name="com.sample.remotedeploy.mbean.control:service=FileUpload">
聽
聽聽<depends>jboss.system:service=Logging,type=Log4jService</depends>
聽聽<!-- jboss.rmi -->
聽聽<depends>jboss.rmi:type=RMIClassLoader</depends>
聽聽<!-- jboss jmx -->
聽聽<depends>jboss.jmx:name=Invoker,type=adaptor</depends>
聽聽<depends>jboss.jmx:name=Invoker,protocol=jrmp,service=proxyFactory,type=adaptor</depends>
聽聽<depends>jboss.jmx:alias=jmx/rmi/RMIAdaptor</depends>
聽聽<!-- jboss.security -->
聽聽<depends>jboss.security:service=JaasSecurityManager</depends>
聽聽<depends>jboss.security:service=SecurityConfig</depends>
聽聽<depends>jboss.security:service=XMLLoginConfig</depends>
聽聽<!-- jboss -->
聽聽<depends>jboss:service=ClientUserTransaction</depends>
聽聽<depends>jboss:service=Naming</depends>
聽聽<depends>jboss:service=ClientUserTransaction</depends>
聽聽<depends>jboss:service=TransactionManager</depends>
聽聽<depends>jboss:service=UUIDKeyGeneratorFactory</depends>
聽聽<depends>jboss:service=invoker,type=jrmp</depends>
聽聽<depends>jboss:service=proxyFactory,target=ClientUserTransaction</depends>
聽聽<depends>jboss:service=proxyFactory,target=ClientUserTransactionFactory</depends>
聽</mbean>
</server>
9銆丮ANIFEST.MF 浠g爜濡備笅錛?br />
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.2
Created-By: 1.4.2_05-b04 (Sun Microsystems Inc.)
10銆佹鏃舵妸鎵鏈塉ava緙栬瘧鍚庣殑class鏂囦歡鎵撳寘鎴?com.sample.jar 騫舵嫹璐濆埌Jboss瀹夎鐩綍 server\default\lib 涓嬶紝鍚姩Jboss錛堝嵆榪愯bin鐩綍涓嬬殑run.bat錛夛紝鍐嶈繍琛?TestFileUpload.java 紼嬪簭榪涜嫻嬭瘯錛堝甫鍏ュ弬鏁頒負瑕佷笂浼犳枃浠跺強瀹屾暣鐩綍鍚嶏紝濡?java com.sample.upload.test.TestFileUpload E:\test.txt 娉ㄦ剰寮曞叆-Classpath鍙橀噺錛夛紝鍒欐枃浠朵細涓婁紶鍒癑boss鐨剆erver\default鐩綍涓?br />
聽聽聽甯屾湜澶у鏈夋墍鏀惰幏銆?/p>