Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
commons
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
3
Merge Requests
3
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DevOps
commons
Commits
a5bdf5eb
Commit
a5bdf5eb
authored
Dec 30, 2019
by
杨锐
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
自定义DelegatingTracingFilter,当http method为options时,直接执行chain.doFilter(request, response)。
parent
ec19c8cd
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
51 additions
and
2 deletions
+51
-2
BraveAutoConfiguration.java
...roup/tech/brave/configuration/BraveAutoConfiguration.java
+2
-2
CustomDelegatingTracingFilter.java
...roup/tech/brave/filter/CustomDelegatingTracingFilter.java
+49
-0
No files found.
brave-spring-boot-starter/src/main/java/cn/quantgroup/tech/brave/configuration/BraveAutoConfiguration.java
View file @
a5bdf5eb
...
@@ -7,8 +7,8 @@ import brave.okhttp3.TracingInterceptor;
...
@@ -7,8 +7,8 @@ import brave.okhttp3.TracingInterceptor;
import
brave.propagation.B3Propagation
;
import
brave.propagation.B3Propagation
;
import
brave.propagation.ExtraFieldPropagation
;
import
brave.propagation.ExtraFieldPropagation
;
import
brave.spring.web.TracingClientHttpRequestInterceptor
;
import
brave.spring.web.TracingClientHttpRequestInterceptor
;
import
brave.spring.webmvc.DelegatingTracingFilter
;
import
brave.spring.webmvc.SpanCustomizingAsyncHandlerInterceptor
;
import
brave.spring.webmvc.SpanCustomizingAsyncHandlerInterceptor
;
import
cn.quantgroup.tech.brave.filter.CustomDelegatingTracingFilter
;
import
cn.quantgroup.tech.brave.properties.BraveProperties
;
import
cn.quantgroup.tech.brave.properties.BraveProperties
;
import
cn.quantgroup.tech.brave.properties.ServiceProperties
;
import
cn.quantgroup.tech.brave.properties.ServiceProperties
;
import
cn.quantgroup.tech.brave.service.ITechHttpClient
;
import
cn.quantgroup.tech.brave.service.ITechHttpClient
;
...
@@ -245,7 +245,7 @@ public class BraveAutoConfiguration {
...
@@ -245,7 +245,7 @@ public class BraveAutoConfiguration {
@Bean
@Bean
public
FilterRegistrationBean
registrationBean
()
{
public
FilterRegistrationBean
registrationBean
()
{
FilterRegistrationBean
registrationBean
=
new
FilterRegistrationBean
();
FilterRegistrationBean
registrationBean
=
new
FilterRegistrationBean
();
DelegatingTracingFilter
delegatingTracingFilter
=
new
DelegatingTracingFilter
();
CustomDelegatingTracingFilter
delegatingTracingFilter
=
new
Custom
DelegatingTracingFilter
();
registrationBean
.
setFilter
(
delegatingTracingFilter
);
registrationBean
.
setFilter
(
delegatingTracingFilter
);
registrationBean
.
setName
(
"techDelegatingTracingFilter"
);
registrationBean
.
setName
(
"techDelegatingTracingFilter"
);
registrationBean
.
setOrder
(
Integer
.
MIN_VALUE
);
registrationBean
.
setOrder
(
Integer
.
MIN_VALUE
);
...
...
brave-spring-boot-starter/src/main/java/cn/quantgroup/tech/brave/filter/CustomDelegatingTracingFilter.java
0 → 100644
View file @
a5bdf5eb
package
cn
.
quantgroup
.
tech
.
brave
.
filter
;
import
brave.servlet.TracingFilter
;
import
brave.spring.webmvc.DelegatingTracingFilter
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.http.HttpMethod
;
import
javax.servlet.*
;
import
javax.servlet.http.HttpServletRequest
;
import
java.io.IOException
;
/**
* Similar to {@link TracingFilter}, except that it initializes from Spring.
*
* <p> {@link org.springframework.web.filter.DelegatingFilterProxy} is similar, but it uses
* volatile references as it allows lazy initialization from doGet. This filter cannot do that
* anyway because {@code ServletRequest.getServletContext()} was added after servlet 2.5!
*/
@Slf4j
public
final
class
CustomDelegatingTracingFilter
implements
Filter
{
// servlet ensures create is directly followed by init, so no need for volatile
DelegatingTracingFilter
delegatingTracingFilter
;
@Override
public
void
doFilter
(
ServletRequest
request
,
ServletResponse
response
,
FilterChain
chain
)
throws
IOException
,
ServletException
{
HttpServletRequest
httpServletRequest
=
(
HttpServletRequest
)
request
;
// don't break on initialization error.
if
(
HttpMethod
.
OPTIONS
.
name
().
equals
(
httpServletRequest
.
getMethod
())
||
delegatingTracingFilter
==
null
)
{
chain
.
doFilter
(
request
,
response
);
}
else
{
delegatingTracingFilter
.
doFilter
(
request
,
response
,
chain
);
}
}
@Override
public
void
init
(
FilterConfig
filterConfig
)
{
DelegatingTracingFilter
delegatingTracingFilter
=
new
DelegatingTracingFilter
();
delegatingTracingFilter
.
init
(
filterConfig
);
this
.
delegatingTracingFilter
=
delegatingTracingFilter
;
}
@Override
public
void
destroy
()
{
// TracingFilter is stateless, so nothing to destroy
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment