spring内置jetty 配置静态资源

    最近做的项目用的框架是spring+jersey+jetty,这个框架原来只用于接口项目,但本次做的项目需要加入静态资源,由于我是第一次使用jetty,还是在spring中内置,不知道该如何解决,后来在网上查了一下资料,也只找到了jetty相关的配置文件,于是我就改了一下放入了spring的配置文件中,结果还是比较理想的,所有记录一下,嘿嘿!

<!-- jetty server 配置 -->
<bean id="Server" class="org.eclipse.jetty.server.Server" init-method="start" destroy-method="stop">

			<constructor-arg>
				<bean id="threadPool" class="org.eclipse.jetty.util.thread.QueuedThreadPool">
					<property name="minThreads" value="${jetty.server.threads.min}"/>
					<property name="maxThreads" value="${jetty.server.threads.max}"/>
				</bean>
			</constructor-arg>

			<property name="connectors">
				<list>
					<bean id="Connector" class="org.eclipse.jetty.server.nio.NetworkTrafficSelectChannelConnector">
						<constructor-arg ref="Server" />
						<property name="port" value="${jetty.server.port}" />
					</bean>
				</list>
			</property>

			<property name="handler">
				<bean id="handlers" class="org.eclipse.jetty.server.handler.HandlerList">
					<property name="handlers">
						<list>
                           <!-- 静态资源配置,需要在ContextHandler里,配置ResouceHandler -->
							<bean class="org.eclipse.jetty.server.handler.ContextHandler">
								<property name="contextPath" value="/"/>
								<property name="handler">
									<bean class="org.eclipse.jetty.server.handler.ResourceHandler">
										<property name="directoriesListed" value="true"></property>
                                        <!-- 静态资源路径 -->
										<property name="resourceBase" value="src/main/webapp/"></property>
									</bean>
								</property>
							</bean>
							<bean class="org.eclipse.jetty.server.handler.ContextHandlerCollection">
								<property name="handlers">
									<list>
										<bean class="org.eclipse.jetty.webapp.WebAppContext">
										<!-- throwUnavailableOnStartupException defult false  -->
											<property name="throwUnavailableOnStartupException" value="true" />
											<property name="contextPath" value="/" />
											<property name="configurationDiscovered" value="true" />
											<!--property name="descriptor" value="web.xml" /-->
											<property name="defaultsDescriptor" value="web.xml"/>
											<property name="resourceBase" value="config" />
										</bean>
									</list>
								</property>
							</bean>
							<bean class="org.eclipse.jetty.server.handler.DefaultHandler" />
						</list>
					</property>
				</bean>
			</property>
		</bean>

    

转载于:https://my.oschina.net/u/3082177/blog/1814714

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SpringJetty都提供了对WebSocket的支持,可以通过集成SpringJetty来实现WebSocket的应用。 首先,需要在pom.xml中添加JettySpring WebSocket的依赖: ```xml <dependency> <groupId>org.springframework</groupId> <artifactId>spring-websocket</artifactId> <version>5.3.9</version> </dependency> <dependency> <groupId>org.eclipse.jetty.websocket</groupId> <artifactId>websocket-server</artifactId> <version>11.0.2</version> </dependency> ``` 然后,在Spring配置文件配置WebSocket: ```java @Configuration @EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer { @Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { registry.addHandler(chatWebSocketHandler(), "/chat"); } @Bean public WebSocketHandler chatWebSocketHandler() { return new ChatWebSocketHandler(); } } ``` 这里注册了一个WebSocket处理器,并将它映射到路径“/chat”。 最后,在WebSocket处理器中实现具体的业务逻辑: ```java public class ChatWebSocketHandler extends TextWebSocketHandler { private List<WebSocketSession> sessions = new ArrayList<>(); @Override public void afterConnectionEstablished(WebSocketSession session) throws Exception { sessions.add(session); } @Override public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception { sessions.remove(session); } @Override protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception { for (WebSocketSession s : sessions) { s.sendMessage(message); } } } ``` 这里实现了一个聊天室,当有用户连接时,将其加入到sessions列表中;当有用户断开连接时,从sessions列表中移除;当有用户发送消息时,将消息发送给所有连接的用户。 最后,在Jetty配置文件中启用WebSocket: ```xml <Configure class="org.eclipse.jetty.webapp.WebAppContext"> <Set name="contextPath">/</Set> <Set name="war"><Property name="jetty.base" default="."/>/webapps/myapp.war</Set> <Call name="addServlet"> <Arg>org.eclipse.jetty.websocket.server.WebSocketServerServlet</Arg> <Arg>/chat/*</Arg> </Call> <Set name="handler"> <New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection"> <Set name="handlers"> <Array type="org.eclipse.jetty.server.Handler"> <Item> <New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/> </Item> <Item> <New id="DefaultHandler" class="org.eclipse.jetty.server.handler.DefaultHandler"/> </Item> </Array> </Set> </New> </Set> </Configure> ``` 这里将WebSocketServlet添加到Jetty中,并将其映射到路径“/chat/*”。 以上就是SpringJetty集成实现WebSocket的简单示例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值