描述:我在tomcat部署了3个项目(projectA,projectB,projectC) 我在tomcat的servlet.xml中配置了让projectC先启动。这是没问题的。但是我想projectA启动时通过HttpConnection去访问projectC的serlvet就访问不了,并出现错误:java.net.SocketTimeoutException: Read timed out。。。怎么解决这个问题呢??各位大神,棒棒忙。。困扰了些许时间。。谢谢 启动时的打印。 -----------------------C start up--------------------- 2015-4-12 21:07:17 org.apache.catalina.startup.HostConfig deployDescriptor 信息: Deploying configuration descriptor host-manager.xml 2015-4-12 21:07:17 org.apache.catalina.startup.HostConfig deployDescriptor 信息: Deploying configuration descriptor manager.xml 2015-4-12 21:07:17 org.apache.catalina.startup.HostConfig deployDirectory 信息: Deploying web application directory docs 2015-4-12 21:07:17 org.apache.catalina.startup.HostConfig deployDirectory 信息: Deploying web application directory examples 2015-4-12 21:07:17 org.apache.catalina.core.ApplicationContext log 信息: ContextListener: contextInitialized() 2015-4-12 21:07:17 org.apache.catalina.core.ApplicationContext log 信息: SessionListener: contextInitialized() 2015-4-12 21:07:17 org.apache.catalina.startup.HostConfig deployDirectory 信息: Deploying web application directory projectA -----------------------A start up--------------------- 2015-4-12 21:07:18 org.apache.catalina.startup.HostConfig deployDirectory 信息: Deploying web application directory projectB -----------------------B start up--------------------- 2015-4-12 21:07:18 org.apache.catalina.startup.HostConfig deployDirectory 信息: Deploying web application directory ROOT 2015-4-12 21:07:18 org.apache.coyote.http11.Http11Protocol start 信息: Starting Coyote HTTP/1.1 on http-8080 2015-4-12 21:07:18 org.apache.jk.common.ChannelSocket init 信息: JK: ajp13 listening on /0.0.0.0:8009 2015-4-12 21:07:18 org.apache.jk.server.JkMain start 信息: Jk running ID=0 time=0/26 config=null 2015-4-12 21:07:18 org.apache.catalina.startup.Catalina start 信息: Server startup in 1137 ms |
|
20分 |
是不是跨域的原因?或者直接用RMI吧,感觉好浪费…………
|
1.启动时的打印是A还没有调用C的时候,我只是想说明。是C先启动。。。 2.然后我在A启动时加了HttpConnection去调用C的servlet但是就是不行。。必须三个都启动完显示:信息: Server startup in 1137 ms才能去调用 我现在想到的办法只能是启动两个TOMCAT,一个放projectC,一个放A,B.先启动projectC然后在启动其余两个是没有问题的。。 |
|
延 迟 调 用
|
|
可以具体一些吗? |
|
30分 |
public void a() throws InterruptedException{ try { // 做一些事情 } catch (Exception e) { Thread.sleep(10000); a(); } } |
你这种不行。。tomcat必须全部项目启动完了,才能调用。。 |
|
50分 |
请仔细看我的代码
public void a() throws InterruptedException{ try { // A项目访问C项目 } catch (Exception e) { // 无法调用时,进入这里,休息10秒 Thread.sleep(10000); //再重新调用本方法 a(); } } |
查询资料后已经弄好了。就是在tomcat的server.xml中配置两个<service></service>即可(新的service修改对应的端口号就好) 例如: <Service name="Catalina"> <Connector port="8215" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> <Engine name="Catalina" defaultHost="localhost"> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context path="/projectC" docBase="c:\projectC"/> </Host> </Engine> </Service> <Service name="projectA"> .... <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context path="/projectA" docBase="c:\projectA"/> </Host> ... </Service> |