मैं एक परियोजना पर काम कर रहा हूँ के साथ 404 लौटाने और मैं एक सर्वर पोर्ट 8082 पर स्थानीय होस्ट पते में सुन (मैं पहले से ही 8081 है एक और सर्वर के साथ सुरक्षित)जेट्टी सर्वर हमेशा हैंडलर
public class Class2HTTPServer {
public static void main(String[] args) {
Class1 object1= new Class1 (300);// parameter I need for other stuff
Class2 object2= new Class2 (300,object1,5); // parameters for other unrelated stuff
int listen_on_port = 8082;
Class2HTTPMessageHandler handler = new Class2HTTPMessageHandler (
object2);
String server_port_string = System.getProperty(SystemConstants.PROPERTY_KEY_SERVER_PORT);
if(server_port_string != null) {
try {
listen_on_port = Integer.parseInt(server_port_string);
listen_on_portfs = Integer.parseInt(server_port_string);
} catch(NumberFormatException ex) {
System.err.println(ex);
}
}
ComponentHTTPServerUtility.createServer(listen_on_port, handler);
}
}
इस बनाने के लिए कोशिश कर रहा हूँ ComponentHTTPServerUtility वर्ग है:
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.UnknownHostException;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.AbstractHandler;
public class ComponentHTTPServerUtility {
/**
* Creates a server on the port and blocks the calling thread
* @param port
* @param handler
* @return
*/
public static boolean createServer(int port, AbstractHandler handler) {
Server server = new Server(port);
if (handler != null) {
server.setHandler(handler);
}
try {
server.start();
server.join();
} catch (Exception ex) {
ex.printStackTrace();
}
return true;
}
/**
* Creates a server on the InetAddress and blocks the calling thread
* @param ipAddress
* @param port
* @param handler
* @return
*/
public static boolean createServer(String ipAddress, int port,
AbstractHandler handler) {
InetAddress inetIpAddress;
InetSocketAddress address;
Server server;
if (ipAddress == null)
return false;
try {
inetIpAddress = InetAddress.getByName(ipAddress);
address = new InetSocketAddress(inetIpAddress, port);
} catch (UnknownHostException ex) {
ex.printStackTrace();
return false;
}
server = new Server(address);
if (handler != null) {
server.setHandler(handler);
}
try {
server.start();
server.join();
} catch (Exception ex) {
ex.printStackTrace();
}
return true;
}
}
जब मैं सर्वर मैं कंसोल में निम्न संदेश प्राप्त चलाएँ:
2015-01-19 13:13:49.451:INFO:oejs.Server:jetty-8.1.13.v20130916
2015-01-19 13:13:49.501:INFO:oejs.AbstractConnector:Started [email protected]:8082
,210
लेकिन अगर मैं करने के लिए अपने ब्राउज़र के साथ जाना: http://localhost:8082/
मैं त्रुटि 404. मिल हालांकि मैं यह दर्शाता है कि सर्वर चल रहा है एक रिक्त पृष्ठ मिल अगर मैं अन्य सर्वर (पोर्ट 8081) के साथ भी ऐसा ही।
क्षमा करें, लेकिन मैं और अधिक विशिष्ट नहीं हो सकता। किसी भी विचार या सुझाव की अत्यधिक सराहना की जाएगी। मैं घंटों तक इस पर अटक गया हूं।
धन्यवाद
संपादित करें:
इन परिणामों लाइन डालने के बाद मैं दोनों सर्वर के लिए मिल रहे हैं:
System.err.println (server.dump());
कार्य एक:
2015-01-19 15:37:05.600:INFO:oejs.Server:jetty-8.1.13.v20130916
2015-01-19 15:37:05.651:INFO:oejs.AbstractConnector:Started [email protected]:8081
[email protected] - STARTED
+- [email protected] - STARTED
|
+- qtp831407528{8<=6<=8/254,0} - STARTED
| +- 10 qtp831407528-10 TIMED_WAITING @ sun.misc.Unsafe.park(Native Method) IDLE
| +- 11 qtp831407528-11 TIMED_WAITING @ sun.misc.Unsafe.park(Native Method) IDLE
| +- 12 qtp831407528-12 TIMED_WAITING @ sun.misc.Unsafe.park(Native Method) IDLE
| +- 13 qtp831407528-13 TIMED_WAITING @ sun.misc.Unsafe.park(Native Method) IDLE
| +- 14 qtp831407528-14 Acceptor0 [email protected]:8081 RUNNABLE @ sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method)
| +- 15 qtp831407528-15 Selector0 RUNNABLE @ sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
| +- 16 qtp831407528-16 TIMED_WAITING @ sun.misc.Unsafe.park(Native Method) IDLE
| +- 17 qtp831407528-17 TIMED_WAITING @ sun.misc.Unsafe.park(Native Method) IDLE
|
+- [email protected]:8081 - STARTED
+- PooledBuffers [0/[email protected],0/[email protected],0/[email protected]]/PooledBuffers [0/[email protected],0/[email protected],0/[email protected]] - STARTED
+- org.eclipse.j[email protected]42557280 - STARTED
| +- [email protected] keys=0 selected=0 id=0
| +- org.eclipse.jetty.io.nio.SelectorManager$SelectSet.doSelect(SelectorManager.java:569)
| +- [email protected] keys=0
+- sun.nio.ch.ServerSocketChannelImpl[/0:0:0:0:0:0:0:0:8081]
+- qtp831407528{8<=6<=8/254,0} - STARTED
और इन गैर एक काम करने से कर रहे हैं:
2015-01-19 15:37:23.231:INFO:oejs.Server:jetty-8.1.13.v20130916
2015-01-19 15:37:23.280:INFO:oejs.AbstractConnector:Started [email protected]:8082
[email protected] - STARTED
+- [email protected] - STARTED
|
+- qtp597321988{8<=6<=8/254,0} - STARTED
| +- 10 qtp597321988-10 Selector0 RUNNABLE @ sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
| +- 11 qtp597321988-11 TIMED_WAITING @ sun.misc.Unsafe.park(Native Method) IDLE
| +- 12 qtp597321988-12 TIMED_WAITING @ sun.misc.Unsafe.park(Native Method) IDLE
| +- 13 qtp597321988-13 TIMED_WAITING @ sun.misc.Unsafe.park(Native Method) IDLE
| +- 14 qtp597321988-14 Acceptor0 [email protected]:8082 RUNNABLE @ sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method)
| +- 15 qtp597321988-15 TIMED_WAITING @ sun.misc.Unsafe.park(Native Method) IDLE
| +- 16 qtp597321988-16 TIMED_WAITING @ sun.misc.Unsafe.park(Native Method) IDLE
| +- 17 qtp597321988-17 TIMED_WAITING @ sun.misc.Unsafe.park(Native Method) IDLE
|
+- [email protected]:8082 - STARTED
+- PooledBuffers [0/[email protected],0/[email protected],0/[email protected]]/PooledBuffers [0/[email protected],0/[email protected],0/[email protected]] - STARTED
+- org.eclipse.j[email protected]7f39425c - STARTED
| +- [email protected] keys=0 selected=0 id=0
| +- org.eclipse.jetty.io.nio.SelectorManager$SelectSet.doSelect(SelectorManager.java:569)
| +- [email protected] keys=0
+- sun.nio.ch.ServerSocketChannelImpl[/0:0:0:0:0:0:0:0:8082]
+- qtp597321988{8<=6<=8/254,0} - STARTED
बुनियादी हैंडलर घोषणा:
public class Class2HTTPMessageHandler extends AbstractHandler{
private Class2 object= null;
public Class2HTTPMessageHandler(Class2 obj){
object= obj;
}
@SuppressWarnings("unchecked")
public void handle(String target, Request baseRequest,
HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
MessageTag messageTag;
String requestURI;
Response fieldResponse = null;
response.setContentType("text/html;charset=utf-8");
response.setStatus(HttpServletResponse.SC_OK);
requestURI = request.getRequestURI();
if (!ComponentUtility.isEmpty(requestURI)
&& requestURI.toLowerCase().startsWith("/stock")) {
messageTag = ComponentUtility.convertURItoMessageTag(requestURI
.substring(6)); // the request is from store
// manager, more
// sophisticated security
// features could be added
// here
} else {
messageTag = ComponentUtility.convertURItoMessageTag(requestURI);
}
// the RequestURI before the switch
if (messageTag == null) {
System.out.println("Unknown message tag");
} else {
switch (messageTag) {
// handling of various messages
}
}
}
}
मैं सर्वर से भेजने के लिए कोशिश कर रहा हूँ एक संदेश टैग और यह मुझे अपवाद है:
2015-01-19 18:16:43.739:WARN:oejs.AbstractHttpConnection:/MESSAGETAG
java.lang.NullPointerException
at com.project.business.Class2.functionFoo(Class2.java:98)
at com.project.server.Class2HTTPMessageHandler.handle(Class2HTTPMessageHandler.java:69)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:370)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:960)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1021)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
at java.lang.Thread.run(Thread.java:745)
'server.start(); 'लाइन' System.err.println (server.dump()) 'के बाद जोड़ें, और परिणामों की रिपोर्ट करें। (इसकी संभावना है कि हैंडलर सर्वर पर सेट नहीं किया गया था)। 'क्लास 2 एचटीटीपी मैसेज हैंडलर' के लिए स्रोत भी शामिल करें (क्योंकि हैंडलर को कोड करने के तरीके हैं ताकि 404 अभी भी हो) –
@ जोकिमइर्डफेल ने केवल – sokras
प्रश्न में परिणाम जोड़े हैं जैसे हैंडलर मौजूद है और शुरू हुआ है। (अजीब है कि आपके पास पहले एक बनाम दूसरे में एक अलग हैंडलर है)। हैंडलर कार्यान्वयन क्या करता है? क्या आप हैंडलर के लिए स्रोत शामिल कर सकते हैं? (घोषणा में दिलचस्पी है, और किसी भी हैंडल (डी | आर) राज्य घोषणाओं सहित विभिन्न अनुरोध मैनिपुलेशन के सभी हेरफेर) –