Có. Điều đó là có thể. Nó đã cố gắng cho cùng một thùng chứa servlet bằng cách sử dụng phương thức get2().
Trước tiên, bạn cần phải thực hiện những thay đổi trong file dưới đây
(Windows) C: \ Program Files \ Apache Software Foundation \ Tomcat 7.0 \ conf \ context.xml Set giá trị của crossContext là true.
context.xml
<Context crossContext="true">
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<!--
<Manager pathname="" />
-->
<!-- Uncomment this to enable Comet connection tacking (provides events
on session expiration as well as webapp lifecycle) -->
<!--
<Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />
-->
</Context>
Xin lưu ý rằng crossContext = "true".
Giả sử bạn có hai ứng dụng web với tên InterServletComm1 và InterServletComm2 có servlets Servlet1 và Servlet1 trong mỗi ứng dụng web tương ứng. Sau đó, mã trong mỗi servlet sẽ như sau:
Servlet1.java
package interServletComm1;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class Servlet1
*/
@WebServlet("/Servlet1")
public class Servlet1 extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public Servlet1() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.setContentType("text/html");
PrintWriter pw = response.getWriter();
request.setAttribute("name", "WebApp1");
ServletContext context = getServletContext().getContext("/InterServletComm2");
RequestDispatcher rd = context.getRequestDispatcher("/Servlet2");
rd.forward(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
Servlet2.java
package interServletComm2;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class Servlet2
*/
@WebServlet("/Servlet2")
public class Servlet2 extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public Servlet2() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.setContentType("text/html");
PrintWriter pw = response.getWriter();
String name = (String) request.getAttribute("name");
pw.println("This is web application 2.");
pw.println("<br>The value received from web application one is: " + name);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
Trên đang gửi thuộc tính tên từ InterServletComm1 và nó được nhận trong InterServletComm2. Vui lòng cho tôi biết nếu câu trả lời này không rõ ràng.
Nguồn
2013-10-09 13:44:41
bạn phải hiển thị một số dịch vụ/giao diện. bạn cũng có thể sử dụng JMX/EJB/JNDI sau đó. ofc, webservice sẽ hoạt động ngay cả khi bạn di chuyển các ứng dụng ra khỏi quy trình (tức là 2 máy chủ web khác nhau) nhưng nó luôn phải sắp xếp/hủy hợp lệ các cuộc gọi. – bestsss
@bestss Đó là lý do tôi không muốn sử dụng dịch vụ web. Không muốn sử dụng EJB/JNDI. Có thể thử JMX trừ khi tôi tìm cách khác tốt hơn. – Gaurav