﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-享受JAVA-文章分类-开发心得</title><link>http://www.blogjava.net/nighthawk/category/2518.html</link><description>享受JAVA，享受人生</description><language>zh-cn</language><lastBuildDate>Fri, 02 Mar 2007 07:09:36 GMT</lastBuildDate><pubDate>Fri, 02 Mar 2007 07:09:36 GMT</pubDate><ttl>60</ttl><item><title>谈谈如何通过网站域名访问weblogic中的应用。（原创） </title><link>http://www.blogjava.net/nighthawk/articles/9227.html</link><dc:creator>nighthawk</dc:creator><author>nighthawk</author><pubDate>Thu, 04 Aug 2005 07:05:00 GMT</pubDate><guid>http://www.blogjava.net/nighthawk/articles/9227.html</guid><wfw:comment>http://www.blogjava.net/nighthawk/comments/9227.html</wfw:comment><comments>http://www.blogjava.net/nighthawk/articles/9227.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/nighthawk/comments/commentRss/9227.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/nighthawk/services/trackbacks/9227.html</trackback:ping><description><![CDATA[<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">大家可能都有体会，在<SPAN lang=EN>weblogic上部署了应用以后。访问的时候都要敲上一堆url。最典型的就是如下：http;//localhost:7001/webapp/……等等，这个在我们的自己的开发环境上倒是可以勉强接受，可是在真正的网站发布的时候，到了用户那里，人家可不愿意在域名后面敲上难记的端口再加上一堆路径。而且，当weblogic上面部署了几个不同的应用的时候，人家该怎么通过不同的域名来访问我的站点呢？这些就是我们接下来要解决的问题。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><SPAN lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">&nbsp;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">让我们以XX政府电子政务项目中的一个解决办法作为例子吧。首先交代一下环境：数据库用的是是<SPAN lang=EN>oracle。Web应用是部署在weblogic上面的，其中有两个web应用是要通过域名让外界访问的，一个是外网门户网站，web应用中名字简称为WWMH。一个是内网门户网站，web应用中的名字简称为NWMH。假设这两个应用是处于同一个目录中的，他们的文件夹就是他们web应用的名称，两个域名分别是<A href="http://www.xxxx.gov.cn/">www.xxxx.gov.cn</A>和inner.xxxx.gov.cn。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><SPAN lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">&nbsp;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">我们先看看域名访问的大体过程：<SPAN lang=EN><o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">比如外部某个机器输入域名访问<SPAN lang=EN><A href="http://www.xxxx.gov.cn/">www.xxxx.gov.cn</A>，这个域名会被解析成为ip地址以及一些请求的主机信息，这样找到DNS服务器。再通过DNS所设的ip指向weblogic所在主机，这样就可以访问到外网的应用，具体详细的DNS原理请参见其他资料。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><SPAN lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">&nbsp;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">外网几个关键配置如下：在这里的前提条件是你的<SPAN lang=EN>web应用已经部署上了。首先要把mydomain-&gt;Servers-&gt;myservers中的list port端口改为80，默认的是7001。这样你通过域名访问的时候就不需要敲入端口，因为默认的就是80。然而仅仅这样还是不够的，此时如果你通过域名访问的时候，在域名后面还得跟上WWMH的文件夹路径，否则访问不到。我们现在所要设置的是context root的路径。把WWMH的文件夹去掉，取而代之的是 ”/”，这样你默认的路径就是根目录了，做法是找到weblogic.xml文件，加上<CONTEXT root="">/<CONTEXT root="">，重起服务，这样通过域名就可以访问了。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><SPAN lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">&nbsp;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt; TEXT-ALIGN: left" align=left><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">如果仅仅是部署了一个应用，通过这样的配置访问当然没有问题。可是，一个<SPAN lang=EN>weblogic上会部署多个应用。需要通过不同的域名来访问，此时，该怎么办？比如说这里的内网，在外网已经配置好的情况下，又不忍心去改动以前配置好的成果。特别是前面的开发人员已经配置好的情况下。我们想到了weblogic自身的一个功能，那就是设置虚拟主机。它的思想就是，把内网的应用模拟成另外一个域名，通过这个域名来达到访问内网的目的。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt; TEXT-ALIGN: left" align=left><SPAN lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">&nbsp;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt; TEXT-ALIGN: left" align=left><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">具体的配置如下：在<SPAN lang=EN>weblogic的console的左边导航栏，中选择mydomain －&gt;Services－&gt; VirtualHosts，然后在右面点击Configure a new Virtual Host...，在Configuration的General选项卡下面，填写：Name: NWMH 。Virtual Host Names里面填上： inner.weifang.gov.cn。然后点击“apply”，然后到Target and Deploy 选项卡，选中myserver，点击“apply”，这样名称为NWMH的虚拟主机就搭建成功了。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt; TEXT-ALIGN: left" align=left><SPAN lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">&nbsp;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left><B><SPAN lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"><SPAN style="mso-spacerun: yes">&nbsp;</SPAN><SPAN style="mso-tab-count: 1">&nbsp; </SPAN></SPAN></B><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">接下来在<SPAN lang=EN>weblogic的console的左边导航栏，中选择mydomain －&gt;Deployments－&gt; Web Application Modeules，在deploy NWMH的应用时，在<SPAN class=wizardtitle><B>&nbsp;</B>Virtual Hosts下选上NWMH</SPAN>，点击 Deploy按钮。这样虚拟主机的配置算是完成了。但是，想要通过域名直接访问内网还是不行。后面还得跟上讨厌的路径，比如inner.xxxx.gov/NWMH，然而默认的路径已经被外网给占用了，如果你在内网的配置文件里面加上<CONTEXT root="">/<CONTEXT root="">，部署肯定是不成功的，weblogic会告诉你，context root已经被占用。怎么办？其实不要慌。解决办法如下：<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left><SPAN style="FONT-SIZE: 12pt; COLOR: #333333; FONT-FAMILY: 宋体; mso-bidi-font-size: 9.0pt">在内网门户的配置文件上加上 </SPAN><SPAN lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 9.0pt"><VIRTUALHOST virtualhostnames="inner.weifang.gov.cn" defaultwebapp="NWMH" targets="myserver" name="NWMH">。<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 9.0pt">重起服务，敲入域名<SPAN lang=EN>inner.xxxx.gov.cn。一切ok！问题解决。通过这种方法，weblogic上即使再部署几个应用都是可以解决的。<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left><SPAN lang=EN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 9.0pt">&nbsp;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; TEXT-ALIGN: left" align=left><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 9.0pt">以上内容仅仅是个人在做项目中的心得。并不保证其技术的完整性和绝对正确。</SPAN></P><img src ="http://www.blogjava.net/nighthawk/aggbug/9227.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/nighthawk/" target="_blank">nighthawk</a> 2005-08-04 15:05 <a href="http://www.blogjava.net/nighthawk/articles/9227.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>